Mercurial > illumos > illumos-gate
annotate usr/src/cmd/fm/fmadm/common/faulty.c @ 8245:7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
6765307 fmdo_send() thread and the thread running fmd_xprt_close() could deadlock
6767850 repair case will deadlock if the case has two ASRUs that one "contains" the other
6769508 shouldn't add label to defect events
6772752 fmadm faulty should display location label even if event has no FRU
6774080 calls to fmd_fmri_service_state not expecting new ISOLATE_PENDING return value
6774124 has_fault feature is working incorrectly
6237897 eversholt: defects need defect rates as well
author | Stephen Hanson <Stephen.Hanson@Sun.COM> |
---|---|
date | Tue, 02 Dec 2008 03:15:06 -0800 |
parents | 1157db66a604 |
children | fe1f7d8cd967 |
rev | line source |
---|---|
0 | 1 /* |
2 * CDDL HEADER START | |
3 * | |
4 * The contents of this file are subject to the terms of the | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
5 * Common Development and Distribution License (the "License"). |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
6 * You may not use this file except in compliance with the License. |
0 | 7 * |
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | |
9 * or http://www.opensolaris.org/os/licensing. | |
10 * See the License for the specific language governing permissions | |
11 * and limitations under the License. | |
12 * | |
13 * When distributing Covered Code, include this CDDL HEADER in each | |
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. | |
15 * If applicable, add the following below this CDDL HEADER, with the | |
16 * fields enclosed by brackets "[]" replaced with your own identifying | |
17 * information: Portions Copyright [yyyy] [name of copyright owner] | |
18 * | |
19 * CDDL HEADER END | |
20 */ | |
21 /* | |
6002 | 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. |
0 | 23 * Use is subject to license terms. |
24 */ | |
25 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
26 #include <sys/types.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
27 #include <fmadm.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
28 #include <errno.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
29 #include <limits.h> |
0 | 30 #include <strings.h> |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
31 #include <stdio.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
32 #include <unistd.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
33 #include <sys/wait.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
34 #include <sys/stat.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
35 #include <fcntl.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
36 #include <fm/fmd_log.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
37 #include <sys/fm/protocol.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
38 #include <fm/libtopo.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
39 #include <fm/fmd_adm.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
40 #include <dlfcn.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
41 #include <sys/systeminfo.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
42 #include <sys/utsname.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
43 #include <libintl.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
44 #include <locale.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
45 #include <sys/smbios.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
46 #include <libdevinfo.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
47 #include <stdlib.h> |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
48 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
49 #define offsetof(s, m) ((size_t)(&(((s*)0)->m))) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
50 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
51 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
52 * catalog_setup() must be called to setup support functions. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
53 * Fault records are added to catalog by calling add_fault_record_to_catalog() |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
54 * records are stored in order of importance to the system. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
55 * If -g flag is set or not_suppressed is not set and the class fru, fault, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
56 * type are the same then details are merged into an existing record, with uuid |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
57 * records are stored in time order. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
58 * For each record information is extracted from nvlist and merged into linked |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
59 * list each is checked for identical records for which percentage certainty are |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
60 * added together. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
61 * print_catalog() is called to print out catalog and release external resources |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
62 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
63 * /---------------\ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
64 * status_rec_list -> | | -| |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
65 * \---------------/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
66 * \/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
67 * /---------------\ /-------\ /-------\ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
68 * status_fru_list | status_record | -> | uurec | -> | uurec | -| |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
69 * \/ | | |- | | <- | | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
70 * /-------------\ | | \-------/ \-------/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
71 * | | -> | | \/ \/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
72 * \-------------/ | | /-------\ /-------\ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
73 * \/ | | -> | asru | -> | asru | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
74 * --- | | | | <- | | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
75 * | | \-------/ \-------/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
76 * status_asru_list | class | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
77 * \/ | resource | /-------\ /-------\ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
78 * /-------------\ | fru | -> | list | -> | list | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
79 * | | -> | serial | | | <- | | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
80 * \-------------/ | | \-------/ \-------/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
81 * \/ \---------------/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
82 * --- \/ /\ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
83 * /---------------\ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
84 * | status_record | |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
85 * \---------------/ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
86 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
87 * Fmadm faulty takes a number of options which affect the format of the |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
88 * output displayed. By default, the display reports the FRU and ASRU along |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
89 * with other information on per-case basis as in the example below. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
90 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
91 * --------------- ------------------------------------ -------------- ------- |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
92 * TIME EVENT-ID MSG-ID SEVERITY |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
93 * --------------- ------------------------------------ -------------- ------- |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
94 * Sep 21 10:01:36 d482f935-5c8f-e9ab-9f25-d0aaafec1e6c AMD-8000-2F Major |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
95 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
96 * Fault class : fault.memory.dimm_sb |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
97 * Affects : mem:///motherboard=0/chip=0/memory-controller=0/dimm=0/rank=0 |
7275 | 98 * faulted but still in service |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
99 * FRU : "CPU 0 DIMM 0" (hc://.../memory-controller=0/dimm=0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
100 * faulty |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
101 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
102 * Description : The number of errors associated with this memory module has |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
103 * exceeded acceptable levels. Refer to |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
104 * http://sun.com/msg/AMD-8000-2F for more information. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
105 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
106 * Response : Pages of memory associated with this memory module are being |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
107 * removed from service as errors are reported. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
108 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
109 * Impact : Total system memory capacity will be reduced as pages are |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
110 * retired. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
111 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
112 * Action : Schedule a repair procedure to replace the affected memory |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
113 * module. Use fmdump -v -u <EVENT_ID> to identify the module. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
114 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
115 * The -v flag is similar, but adds some additonal information such as the |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
116 * resource. The -s flag is also similar but just gives the top line summary. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
117 * All these options (ie without the -f or -r flags) use the print_catalog() |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
118 * function to do the display. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
119 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
120 * The -f flag changes the output so that it appears sorted on a per-fru basis. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
121 * The output is somewhat cut down compared to the default output. If -f is |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
122 * used, then print_fru() is used to print the output. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
123 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
124 * ----------------------------------------------------------------------------- |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
125 * "SLOT 2" (hc://.../hostbridge=3/pciexrc=3/pciexbus=4/pciexdev=0) faulty |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
126 * 5ca4aeb3-36...f6be-c2e8166dc484 2 suspects in this FRU total certainty 100% |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
127 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
128 * Description : A problem was detected for a PCI device. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
129 * Refer to http://sun.com/msg/PCI-8000-7J for more information. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
130 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
131 * Response : One or more device instances may be disabled |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
132 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
133 * Impact : Possible loss of services provided by the device instances |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
134 * associated with this fault |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
135 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
136 * Action : Schedule a repair procedure to replace the affected device. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
137 * Use fmdump -v -u <EVENT_ID> to identify the device or contact |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
138 * Sun for support. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
139 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
140 * The -r flag changes the output so that it appears sorted on a per-asru basis. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
141 * The output is very much cut down compared to the default output, just giving |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
142 * the asru fmri and state. Here print_asru() is used to print the output. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
143 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
144 * mem:///motherboard=0/chip=0/memory-controller=0/dimm=0/rank=0 degraded |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
145 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
146 * For all fmadm faulty options, the sequence of events is |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
147 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
148 * 1) Walk through all the cases in the system using fmd_adm_case_iter() and |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
149 * for each case call dfault_rec(). This will call add_fault_record_to_catalog() |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
150 * This will extract the data from the nvlist and call catalog_new_record() to |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
151 * save the data away in various linked lists in the catalogue. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
152 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
153 * 2) Once this is done, the data can be supplemented by using |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
154 * fmd_adm_rsrc_iter(). However this is now only necessary for the -i option. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
155 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
156 * 3) Finally print_catalog(), print_fru() or print_asru() are called as |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
157 * appropriate to display the information from the catalogue sorted in the |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
158 * requested way. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
159 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
160 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
161 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
162 typedef struct name_list { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
163 struct name_list *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
164 struct name_list *prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
165 char *name; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
166 uint8_t pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
167 uint8_t max_pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
168 ushort_t count; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
169 int status; |
6002 | 170 char *label; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
171 } name_list_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
172 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
173 typedef struct ari_list { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
174 char *ari_uuid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
175 struct ari_list *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
176 } ari_list_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
177 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
178 typedef struct uurec { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
179 struct uurec *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
180 struct uurec *prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
181 char *uuid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
182 ari_list_t *ari_uuid_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
183 name_list_t *asru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
184 uint64_t sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
185 } uurec_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
186 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
187 typedef struct uurec_select { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
188 struct uurec_select *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
189 char *uuid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
190 } uurec_select_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
191 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
192 typedef struct host_id { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
193 char *chassis; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
194 char *server; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
195 char *platform; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
196 } hostid_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
197 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
198 typedef struct host_id_list { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
199 hostid_t hostid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
200 struct host_id_list *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
201 } host_id_list_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
202 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
203 typedef struct status_record { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
204 hostid_t *host; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
205 int nrecs; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
206 uurec_t *uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
207 char *severity; /* in C locale */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
208 char *msgid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
209 name_list_t *class; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
210 name_list_t *resource; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
211 name_list_t *asru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
212 name_list_t *fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
213 name_list_t *serial; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
214 char *url; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
215 uint8_t not_suppressed; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
216 } status_record_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
217 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
218 typedef struct sr_list { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
219 struct sr_list *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
220 struct sr_list *prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
221 struct status_record *status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
222 } sr_list_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
223 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
224 typedef struct resource_list { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
225 struct resource_list *next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
226 struct resource_list *prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
227 sr_list_t *status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
228 char *resource; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
229 uint8_t not_suppressed; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
230 uint8_t max_pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
231 } resource_list_t; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
232 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
233 typedef struct tgetlabel_data { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
234 char *label; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
235 char *fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
236 } tgetlabel_data_t; |
0 | 237 |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
238 sr_list_t *status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
239 resource_list_t *status_fru_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
240 resource_list_t *status_asru_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
241 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
242 static char *locale; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
243 static char *nlspath; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
244 static int max_display; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
245 static int max_fault = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
246 static topo_hdl_t *topo_handle; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
247 static char *topo_handle_uuid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
248 static host_id_list_t *host_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
249 static int n_server; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
250 static int opt_g; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
251 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
252 static char * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
253 format_date(char *buf, size_t len, uint64_t sec) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
254 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
255 if (sec > LONG_MAX) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
256 (void) fprintf(stderr, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
257 "record time is too large for 32-bit utility\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
258 (void) snprintf(buf, len, "0x%llx", sec); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
259 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
260 time_t tod = (time_t)sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
261 (void) strftime(buf, len, "%b %d %T", localtime(&tod)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
262 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
263 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
264 return (buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
265 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
266 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
267 static hostid_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
268 find_hostid_in_list(char *platform, char *chassis, char *server) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
269 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
270 hostid_t *rt = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
271 host_id_list_t *hostp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
272 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
273 if (platform == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
274 platform = "-"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
275 if (server == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
276 server = "-"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
277 hostp = host_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
278 while (hostp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
279 if (hostp->hostid.platform && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
280 strcmp(hostp->hostid.platform, platform) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
281 hostp->hostid.server && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
282 strcmp(hostp->hostid.server, server) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
283 (chassis == NULL || hostp->hostid.chassis == NULL || |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
284 strcmp(chassis, hostp->hostid.chassis) == 0)) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
285 rt = &hostp->hostid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
286 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
287 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
288 hostp = hostp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
289 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
290 if (rt == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
291 hostp = malloc(sizeof (host_id_list_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
292 hostp->hostid.platform = strdup(platform); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
293 hostp->hostid.server = strdup(server); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
294 hostp->hostid.chassis = chassis ? strdup(chassis) : NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
295 hostp->next = host_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
296 host_list = hostp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
297 rt = &hostp->hostid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
298 n_server++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
299 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
300 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
301 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
302 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
303 static hostid_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
304 find_hostid(nvlist_t *nvl) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
305 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
306 char *platform = NULL, *chassis = NULL, *server = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
307 nvlist_t *auth, *fmri; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
308 hostid_t *rt = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
309 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
310 if (nvlist_lookup_nvlist(nvl, FM_SUSPECT_DE, &fmri) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
311 nvlist_lookup_nvlist(fmri, FM_FMRI_AUTHORITY, &auth) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
312 (void) nvlist_lookup_string(auth, FM_FMRI_AUTH_PRODUCT, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
313 &platform); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
314 (void) nvlist_lookup_string(auth, FM_FMRI_AUTH_SERVER, &server); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
315 (void) nvlist_lookup_string(auth, FM_FMRI_AUTH_CHASSIS, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
316 &chassis); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
317 rt = find_hostid_in_list(platform, chassis, server); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
318 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
319 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
320 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
321 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
322 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
323 catalog_setup(void) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
324 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
325 char *tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
326 int pl; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
327 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
328 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
329 * All FMA event dictionaries use msgfmt(1) message objects to produce |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
330 * messages, even for the C locale. We therefore want to use dgettext |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
331 * for all message lookups, but its defined behavior in the C locale is |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
332 * to return the input string. Since our input strings are event codes |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
333 * and not format strings, this doesn't help us. We resolve this nit |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
334 * by setting NLSPATH to a non-existent file: the presence of NLSPATH |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
335 * is defined to force dgettext(3C) to do a full lookup even for C. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
336 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
337 nlspath = getenv("NLSPATH"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
338 if (nlspath == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
339 putenv("NLSPATH=/usr/lib/fm/fmd/fmd.cat"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
340 else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
341 pl = strlen(nlspath) + sizeof ("NLSPATH=") + 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
342 tp = malloc(pl); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
343 (void) snprintf(tp, pl, "NLSPATH=%s", nlspath); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
344 nlspath = tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
345 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
346 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
347 locale = setlocale(LC_MESSAGES, ""); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
348 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
349 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
350 static char * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
351 get_dict_url(char *id) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
352 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
353 char *url = "http://sun.com/msg/"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
354 int msz = sizeof (url) + strlen(id) + 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
355 char *cp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
356 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
357 cp = malloc(msz); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
358 (void) snprintf(cp, msz, "%s%s", url, id); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
359 return (cp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
360 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
361 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
362 static char * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
363 get_dict_msg(char *id, char *idx, int unknown, int translate) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
364 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
365 char mbuf[128]; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
366 char *msg; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
367 char dbuf[32]; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
368 char *p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
369 int restore_env = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
370 int restore_locale = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
371 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
372 p = strchr(id, '-'); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
373 if (p == NULL || p == id || (p - id) >= 32) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
374 msg = mbuf; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
375 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
376 strncpy(dbuf, id, (size_t)(p - id)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
377 dbuf[(size_t)(p - id)] = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
378 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
379 (void) snprintf(mbuf, sizeof (mbuf), "%s.%s", id, idx); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
380 if (translate == 0 || nlspath == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
381 (void) setlocale(LC_MESSAGES, "C"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
382 restore_locale = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
383 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
384 bindtextdomain("FMD", "/usr/lib/locale"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
385 msg = dgettext(dbuf, mbuf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
386 if (msg == mbuf) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
387 (void) setlocale(LC_MESSAGES, "C"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
388 restore_locale = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
389 msg = dgettext(dbuf, mbuf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
390 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
391 if (msg == mbuf) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
392 putenv("NLSPATH=/usr/lib/fm/fmd/fmd.cat"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
393 restore_env = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
394 (void) setlocale(LC_MESSAGES, "C"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
395 msg = dgettext(dbuf, mbuf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
396 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
397 if (restore_locale) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
398 (void) setlocale(LC_MESSAGES, locale); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
399 if (restore_env && nlspath) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
400 putenv(nlspath); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
401 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
402 if (msg == mbuf) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
403 if (unknown) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
404 msg = "unknown"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
405 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
406 msg = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
407 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
408 return (msg); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
409 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
410 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
411 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
412 * compare two fru strings which are made up of substrings seperated by '/' |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
413 * return true if every substring is the same in the two strings, or if a |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
414 * substring is null in one. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
415 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
416 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
417 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
418 frucmp(char *f1, char *f2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
419 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
420 char c1, c2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
421 int i = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
422 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
423 for (;;) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
424 c1 = *f1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
425 c2 = *f2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
426 if (c1 == c2) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
427 i = (c1 == '/') ? 0 : i + 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
428 } else if (i == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
429 if (c1 == '/') { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
430 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
431 f2++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
432 } while ((c2 = *f2) != 0 && c2 != '/'); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
433 if (c2 == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
434 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
435 } else if (c2 == '/') { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
436 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
437 f1++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
438 } while ((c1 = *f1) != 0 && c1 != '/'); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
439 if (c1 == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
440 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
441 } else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
442 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
443 } else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
444 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
445 if (c1 == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
446 return (0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
447 f1++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
448 f2++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
449 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
450 return (1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
451 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
452 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
453 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
454 tgetlabel(topo_hdl_t *thp, tnode_t *node, void *arg) |
0 | 455 { |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
456 int err; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
457 char *fru_name, *lname; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
458 nvlist_t *fru = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
459 int rt = TOPO_WALK_NEXT; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
460 tgetlabel_data_t *tdp = (tgetlabel_data_t *)arg; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
461 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
462 if (topo_node_fru(node, &fru, NULL, &err) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
463 if (topo_fmri_nvl2str(thp, fru, &fru_name, &err) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
464 if (frucmp(tdp->fru, fru_name) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
465 topo_node_label(node, &lname, &err) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
466 tdp->label = strdup(lname); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
467 topo_hdl_strfree(thp, lname); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
468 rt = TOPO_WALK_TERMINATE; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
469 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
470 topo_hdl_strfree(thp, fru_name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
471 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
472 nvlist_free(fru); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
473 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
474 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
475 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
476 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
477 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
478 label_get_topo(void) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
479 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
480 int err; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
481 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
482 topo_handle = topo_open(TOPO_VERSION, 0, &err); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
483 if (topo_handle) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
484 topo_handle_uuid = topo_snap_hold(topo_handle, NULL, &err); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
485 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
486 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
487 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
488 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
489 label_release_topo(void) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
490 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
491 if (topo_handle_uuid) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
492 topo_hdl_strfree(topo_handle, topo_handle_uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
493 if (topo_handle) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
494 topo_snap_release(topo_handle); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
495 topo_close(topo_handle); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
496 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
497 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
498 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
499 static char * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
500 get_fmri_label(char *fru) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
501 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
502 topo_walk_t *twp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
503 tgetlabel_data_t td; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
504 int err; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
505 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
506 td.label = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
507 td.fru = fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
508 if (topo_handle == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
509 label_get_topo(); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
510 if (topo_handle_uuid) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
511 twp = topo_walk_init(topo_handle, FM_FMRI_SCHEME_HC, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
512 tgetlabel, &td, &err); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
513 if (twp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
514 topo_walk_step(twp, TOPO_WALK_CHILD); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
515 topo_walk_fini(twp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
516 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
517 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
518 return (td.label); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
519 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
520 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
521 static char * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
522 get_nvl2str_topo(nvlist_t *nvl) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
523 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
524 char *name = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
525 char *tname; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
526 int err; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
527 char *scheme = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
528 char *mod_name = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
529 char buf[128]; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
530 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
531 if (topo_handle == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
532 label_get_topo(); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
533 if (topo_fmri_nvl2str(topo_handle, nvl, &tname, &err) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
534 name = strdup(tname); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
535 topo_hdl_strfree(topo_handle, tname); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
536 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
537 (void) nvlist_lookup_string(nvl, FM_FMRI_SCHEME, &scheme); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
538 (void) nvlist_lookup_string(nvl, FM_FMRI_MOD_NAME, &mod_name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
539 if (scheme && strcmp(scheme, FM_FMRI_SCHEME_FMD) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
540 mod_name) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
541 (void) snprintf(buf, sizeof (buf), "%s:///module/%s", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
542 scheme, mod_name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
543 name = strdup(buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
544 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
545 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
546 return (name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
547 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
548 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
549 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
550 set_priority(char *s) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
551 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
552 int rt = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
553 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
554 if (s) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
555 if (strcmp(s, "Minor") == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
556 rt = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
557 else if (strcmp(s, "Major") == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
558 rt = 10; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
559 else if (strcmp(s, "Critical") == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
560 rt = 100; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
561 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
562 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
563 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
564 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
565 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
566 cmp_priority(char *s1, char *s2, uint64_t t1, uint64_t t2, uint8_t p1, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
567 uint8_t p2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
568 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
569 int r1, r2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
570 int rt; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
571 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
572 r1 = set_priority(s1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
573 r2 = set_priority(s2); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
574 rt = r1 - r2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
575 if (rt == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
576 if (t1 > t2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
577 rt = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
578 else if (t1 < t2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
579 rt = -1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
580 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
581 rt = p1 - p2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
582 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
583 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
584 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
585 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
586 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
587 * merge two lists into one, by comparing enties in new and moving into list if |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
588 * name is not there or free off memory for names which are already there |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
589 * add_pct indicates if pct is the sum or highest pct |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
590 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
591 static name_list_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
592 merge_name_list(name_list_t **list, name_list_t *new, int add_pct) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
593 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
594 name_list_t *lp, *np, *sp, *rt = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
595 int max_pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
596 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
597 rt = *list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
598 np = new; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
599 while (np) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
600 lp = *list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
601 while (lp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
602 if (strcmp(lp->name, np->name) == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
603 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
604 lp = lp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
605 if (lp == *list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
606 lp = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
607 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
608 if (np->next == new) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
609 sp = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
610 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
611 sp = np->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
612 if (lp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
613 lp->status |= (np->status & FM_SUSPECT_FAULTY); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
614 if (add_pct) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
615 lp->pct += np->pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
616 lp->count += np->count; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
617 } else if (np->pct > lp->pct) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
618 lp->pct = np->pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
619 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
620 max_pct = np->max_pct; |
6002 | 621 if (np->label) |
622 free(np->label); | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
623 free(np->name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
624 free(np); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
625 np = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
626 if (max_pct > lp->max_pct) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
627 lp->max_pct = max_pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
628 if (lp->max_pct > lp->prev->max_pct && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
629 lp != *list) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
630 lp->prev->next = lp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
631 lp->next->prev = lp->prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
632 np = lp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
633 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
634 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
635 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
636 if (np) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
637 lp = *list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
638 if (lp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
639 if (np->max_pct > lp->max_pct) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
640 np->next = lp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
641 np->prev = lp->prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
642 lp->prev->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
643 lp->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
644 *list = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
645 rt = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
646 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
647 lp = lp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
648 while (lp != *list && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
649 np->max_pct < lp->max_pct) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
650 lp = lp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
651 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
652 np->next = lp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
653 np->prev = lp->prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
654 lp->prev->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
655 lp->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
656 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
657 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
658 *list = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
659 np->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
660 np->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
661 rt = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
662 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
663 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
664 np = sp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
665 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
666 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
667 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
668 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
669 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
670 * compare entries in two lists return true if the two lists have identical |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
671 * content. The two lists may not have entries in the same order, so we compare |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
672 * the size of the list as well as trying to find every entry from one list in |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
673 * the other. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
674 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
675 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
676 cmp_name_list(name_list_t *lxp1, name_list_t *lxp2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
677 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
678 name_list_t *lp1, *lp2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
679 int l1 = 0, l2 = 0, common = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
680 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
681 lp2 = lxp2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
682 while (lp2) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
683 l2++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
684 lp2 = lp2->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
685 if (lp2 == lxp2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
686 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
687 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
688 lp1 = lxp1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
689 while (lp1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
690 l1++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
691 lp2 = lxp2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
692 while (lp2) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
693 if (strcmp(lp2->name, lp1->name) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
694 common++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
695 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
696 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
697 lp2 = lp2->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
698 if (lp2 == lxp2) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
699 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
700 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
701 lp1 = lp1->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
702 if (lp1 == lxp1) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
703 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
704 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
705 if (l1 == l2 && l2 == common) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
706 return (0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
707 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
708 return (1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
709 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
710 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
711 static name_list_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
712 alloc_name_list(char *name, uint8_t pct) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
713 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
714 name_list_t *nlp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
715 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
716 nlp = malloc(sizeof (*nlp)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
717 nlp->name = strdup(name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
718 nlp->pct = pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
719 nlp->max_pct = pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
720 nlp->count = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
721 nlp->next = nlp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
722 nlp->prev = nlp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
723 nlp->status = 0; |
6002 | 724 nlp->label = NULL; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
725 return (nlp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
726 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
727 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
728 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
729 free_name_list(name_list_t *list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
730 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
731 name_list_t *next = list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
732 name_list_t *lp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
733 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
734 if (list) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
735 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
736 lp = next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
737 next = lp->next; |
6002 | 738 if (lp->label) |
739 free(lp->label); | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
740 free(lp->name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
741 free(lp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
742 } while (next != list); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
743 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
744 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
745 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
746 static status_record_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
747 new_record_init(uurec_t *uurec_p, char *msgid, name_list_t *class, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
748 name_list_t *fru, name_list_t *asru, name_list_t *resource, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
749 name_list_t *serial, const char *url, boolean_t not_suppressed, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
750 hostid_t *hostid) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
751 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
752 status_record_t *status_rec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
753 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
754 status_rec_p = (status_record_t *)malloc(sizeof (status_record_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
755 status_rec_p->nrecs = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
756 status_rec_p->host = hostid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
757 status_rec_p->uurec = uurec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
758 uurec_p->next = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
759 uurec_p->prev = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
760 uurec_p->asru = asru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
761 status_rec_p->severity = get_dict_msg(msgid, "severity", 1, 0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
762 status_rec_p->class = class; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
763 status_rec_p->fru = fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
764 status_rec_p->asru = asru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
765 status_rec_p->resource = resource; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
766 status_rec_p->serial = serial; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
767 status_rec_p->url = url ? strdup(url) : NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
768 status_rec_p->msgid = strdup(msgid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
769 status_rec_p->not_suppressed = not_suppressed; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
770 return (status_rec_p); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
771 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
772 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
773 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
774 * add record to given list maintaining order higher priority first. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
775 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
776 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
777 add_rec_list(status_record_t *status_rec_p, sr_list_t **list_pp) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
778 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
779 sr_list_t *tp, *np, *sp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
780 int order; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
781 uint64_t sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
782 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
783 np = malloc(sizeof (sr_list_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
784 np->status_record = status_rec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
785 sec = status_rec_p->uurec->sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
786 if ((sp = *list_pp) == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
787 *list_pp = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
788 np->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
789 np->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
790 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
791 /* insert new record in front of lower priority */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
792 tp = sp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
793 order = cmp_priority(status_rec_p->severity, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
794 sp->status_record->severity, sec, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
795 tp->status_record->uurec->sec, 0, 0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
796 if (order > 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
797 *list_pp = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
798 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
799 tp = sp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
800 while (tp != sp && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
801 cmp_priority(status_rec_p->severity, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
802 tp->status_record->severity, sec, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
803 tp->status_record->uurec->sec, 0, 0)) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
804 tp = tp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
805 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
806 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
807 np->next = tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
808 np->prev = tp->prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
809 tp->prev->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
810 tp->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
811 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
812 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
813 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
814 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
815 add_resource(status_record_t *status_rec_p, resource_list_t **rp, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
816 resource_list_t *np) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
817 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
818 int order; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
819 uint64_t sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
820 resource_list_t *sp, *tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
821 status_record_t *srp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
822 char *severity = status_rec_p->severity; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
823 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
824 add_rec_list(status_rec_p, &np->status_rec_list); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
825 if ((sp = *rp) == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
826 np->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
827 np->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
828 *rp = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
829 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
830 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
831 * insert new record in front of lower priority |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
832 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
833 tp = sp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
834 srp = sp->status_rec_list->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
835 sec = status_rec_p->uurec->sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
836 order = cmp_priority(severity, srp->severity, sec, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
837 srp->uurec->sec, np->max_pct, sp->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
838 if (order > 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
839 *rp = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
840 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
841 srp = tp->status_rec_list->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
842 while (tp != sp && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
843 cmp_priority(severity, srp->severity, sec, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
844 srp->uurec->sec, np->max_pct, sp->max_pct) < 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
845 tp = tp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
846 srp = tp->status_rec_list->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
847 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
848 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
849 np->next = tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
850 np->prev = tp->prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
851 tp->prev->next = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
852 tp->prev = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
853 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
854 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
855 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
856 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
857 add_resource_list(status_record_t *status_rec_p, name_list_t *fp, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
858 resource_list_t **rpp) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
859 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
860 int order; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
861 resource_list_t *np, *end; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
862 status_record_t *srp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
863 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
864 np = *rpp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
865 end = np; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
866 while (np) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
867 if (strcmp(fp->name, np->resource) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
868 np->not_suppressed |= status_rec_p->not_suppressed; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
869 srp = np->status_rec_list->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
870 order = cmp_priority(status_rec_p->severity, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
871 srp->severity, status_rec_p->uurec->sec, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
872 srp->uurec->sec, fp->max_pct, np->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
873 if (order > 0 && np != end) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
874 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
875 * remove from list and add again using |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
876 * new priority |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
877 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
878 np->prev->next = np->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
879 np->next->prev = np->prev; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
880 add_resource(status_rec_p, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
881 rpp, np); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
882 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
883 add_rec_list(status_rec_p, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
884 &np->status_rec_list); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
885 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
886 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
887 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
888 np = np->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
889 if (np == end) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
890 np = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
891 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
892 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
893 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
894 if (np == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
895 np = malloc(sizeof (resource_list_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
896 np->resource = fp->name; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
897 np->not_suppressed = status_rec_p->not_suppressed; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
898 np->status_rec_list = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
899 np->max_pct = fp->max_pct; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
900 add_resource(status_rec_p, rpp, np); |
0 | 901 } |
902 } | |
903 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
904 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
905 add_list(status_record_t *status_rec_p, name_list_t *listp, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
906 resource_list_t **glistp) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
907 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
908 name_list_t *fp, *end; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
909 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
910 fp = listp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
911 end = fp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
912 while (fp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
913 add_resource_list(status_rec_p, fp, glistp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
914 fp = fp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
915 if (fp == end) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
916 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
917 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
918 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
919 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
920 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
921 * add record to rec, fru and asru lists. |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
922 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
923 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
924 catalog_new_record(uurec_t *uurec_p, char *msgid, name_list_t *class, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
925 name_list_t *fru, name_list_t *asru, name_list_t *resource, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
926 name_list_t *serial, const char *url, boolean_t not_suppressed, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
927 hostid_t *hostid) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
928 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
929 status_record_t *status_rec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
930 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
931 status_rec_p = new_record_init(uurec_p, msgid, class, fru, asru, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
932 resource, serial, url, not_suppressed, hostid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
933 add_rec_list(status_rec_p, &status_rec_list); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
934 if (status_rec_p->fru) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
935 add_list(status_rec_p, status_rec_p->fru, &status_fru_list); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
936 if (status_rec_p->asru) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
937 add_list(status_rec_p, status_rec_p->asru, &status_asru_list); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
938 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
939 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
940 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
941 * add uuid and diagnoses time to an existing record for similar fault on the |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
942 * same fru |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
943 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
944 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
945 catalog_merge_record(status_record_t *status_rec_p, uurec_t *uurec_p, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
946 name_list_t *asru, name_list_t *resource, name_list_t *serial, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
947 const char *url, boolean_t not_suppressed) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
948 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
949 uurec_t *uurec1_p; |
0 | 950 |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
951 status_rec_p->nrecs++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
952 /* add uurec in time order */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
953 if (status_rec_p->uurec->sec > uurec_p->sec) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
954 uurec_p->next = status_rec_p->uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
955 uurec_p->prev = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
956 status_rec_p->uurec = uurec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
957 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
958 uurec1_p = status_rec_p->uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
959 while (uurec1_p->next && uurec1_p->next->sec <= uurec_p->sec) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
960 uurec1_p = uurec1_p->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
961 if (uurec1_p->next) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
962 uurec1_p->next->prev = uurec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
963 uurec_p->next = uurec1_p->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
964 uurec_p->prev = uurec1_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
965 uurec1_p->next = uurec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
966 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
967 if (status_rec_p->url == NULL && url != NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
968 status_rec_p->url = strdup(url); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
969 status_rec_p->not_suppressed |= not_suppressed; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
970 uurec_p->asru = merge_name_list(&status_rec_p->asru, asru, 0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
971 (void) merge_name_list(&status_rec_p->resource, resource, 0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
972 (void) merge_name_list(&status_rec_p->serial, serial, 0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
973 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
974 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
975 static status_record_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
976 record_in_catalog(name_list_t *class, name_list_t *fru, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
977 char *msgid, hostid_t *host) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
978 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
979 sr_list_t *status_rec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
980 status_record_t *srp = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
981 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
982 status_rec_p = status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
983 while (status_rec_p) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
984 srp = status_rec_p->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
985 if (host == srp->host && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
986 cmp_name_list(class, srp->class) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
987 cmp_name_list(fru, srp->fru) == 0 && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
988 strcmp(msgid, srp->msgid) == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
989 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
990 if (status_rec_p->next == status_rec_list) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
991 srp = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
992 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
993 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
994 status_rec_p = status_rec_p->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
995 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
996 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
997 return (srp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
998 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
999 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1000 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1001 get_serial_no(nvlist_t *nvl, name_list_t **serial_p, uint8_t pct) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1002 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1003 char *name; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1004 char *serial = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1005 char **lserial = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1006 uint64_t serint; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1007 name_list_t *nlp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1008 int j; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1009 uint_t nelem; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1010 char buf[64]; |
0 | 1011 |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1012 if (nvlist_lookup_string(nvl, FM_FMRI_SCHEME, &name) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1013 if (strcmp(name, FM_FMRI_SCHEME_CPU) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1014 if (nvlist_lookup_uint64(nvl, FM_FMRI_CPU_SERIAL_ID, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1015 &serint) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1016 (void) snprintf(buf, sizeof (buf), "%llX", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1017 serint); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1018 nlp = alloc_name_list(buf, pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1019 (void) merge_name_list(serial_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1020 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1021 } else if (strcmp(name, FM_FMRI_SCHEME_MEM) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1022 if (nvlist_lookup_string_array(nvl, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1023 FM_FMRI_MEM_SERIAL_ID, &lserial, &nelem) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1024 nlp = alloc_name_list(lserial[0], pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1025 for (j = 1; j < nelem; j++) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1026 name_list_t *n1lp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1027 n1lp = alloc_name_list(lserial[j], pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1028 (void) merge_name_list(&nlp, n1lp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1029 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1030 (void) merge_name_list(serial_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1031 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1032 } else if (strcmp(name, FM_FMRI_SCHEME_HC) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1033 if (nvlist_lookup_string(nvl, FM_FMRI_HC_SERIAL_ID, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1034 &serial) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1035 nlp = alloc_name_list(serial, pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1036 (void) merge_name_list(serial_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1037 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1038 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1039 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1040 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1041 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1042 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1043 extract_record_info(nvlist_t *nvl, name_list_t **class_p, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1044 name_list_t **fru_p, name_list_t **serial_p, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1045 name_list_t **resource_p, name_list_t **asru_p, uint8_t status) |
0 | 1046 { |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1047 nvlist_t *lfru, *lasru, *rsrc; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1048 name_list_t *nlp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1049 char *name; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1050 uint8_t lpct = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1051 char *lclass = NULL; |
6002 | 1052 char *label; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1053 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1054 (void) nvlist_lookup_uint8(nvl, FM_FAULT_CERTAINTY, &lpct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1055 if (nvlist_lookup_string(nvl, FM_CLASS, &lclass) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1056 nlp = alloc_name_list(lclass, lpct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1057 (void) merge_name_list(class_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1058 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1059 if (nvlist_lookup_nvlist(nvl, FM_FAULT_FRU, &lfru) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1060 name = get_nvl2str_topo(lfru); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1061 if (name != NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1062 nlp = alloc_name_list(name, lpct); |
7275 | 1063 nlp->status = status & ~(FM_SUSPECT_UNUSABLE | |
1064 FM_SUSPECT_DEGRADED); | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1065 free(name); |
6002 | 1066 if (nvlist_lookup_string(nvl, FM_FAULT_LOCATION, |
1067 &label) == 0) | |
1068 nlp->label = strdup(label); | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1069 (void) merge_name_list(fru_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1070 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1071 get_serial_no(lfru, serial_p, lpct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1072 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1073 if (nvlist_lookup_nvlist(nvl, FM_FAULT_ASRU, &lasru) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1074 name = get_nvl2str_topo(lasru); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1075 if (name != NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1076 nlp = alloc_name_list(name, lpct); |
7275 | 1077 nlp->status = status & ~(FM_SUSPECT_NOT_PRESENT | |
1078 FM_SUSPECT_REPAIRED | FM_SUSPECT_REPLACED | | |
1079 FM_SUSPECT_ACQUITTED); | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1080 free(name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1081 (void) merge_name_list(asru_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1082 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1083 get_serial_no(lasru, serial_p, lpct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1084 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1085 if (nvlist_lookup_nvlist(nvl, FM_FAULT_RESOURCE, &rsrc) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1086 name = get_nvl2str_topo(rsrc); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1087 if (name != NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1088 nlp = alloc_name_list(name, lpct); |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1089 nlp->status = status; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1090 free(name); |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1091 if (nvlist_lookup_string(nvl, FM_FAULT_LOCATION, |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1092 &label) == 0) |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1093 nlp->label = strdup(label); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1094 (void) merge_name_list(resource_p, nlp, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1095 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1096 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1097 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1098 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1099 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1100 add_fault_record_to_catalog(nvlist_t *nvl, uint64_t sec, char *uuid, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1101 const char *url) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1102 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1103 char *msgid = "-"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1104 uint_t i, size = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1105 name_list_t *class = NULL, *resource = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1106 name_list_t *asru = NULL, *fru = NULL, *serial = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1107 nvlist_t **nva; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1108 uint8_t *ba; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1109 status_record_t *status_rec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1110 uurec_t *uurec_p; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1111 hostid_t *host; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1112 boolean_t not_suppressed = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1113 boolean_t any_present = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1114 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1115 (void) nvlist_lookup_string(nvl, FM_SUSPECT_DIAG_CODE, &msgid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1116 (void) nvlist_lookup_uint32(nvl, FM_SUSPECT_FAULT_SZ, &size); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1117 (void) nvlist_lookup_boolean_value(nvl, FM_SUSPECT_MESSAGE, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1118 ¬_suppressed); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1119 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1120 if (size != 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1121 (void) nvlist_lookup_nvlist_array(nvl, FM_SUSPECT_FAULT_LIST, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1122 &nva, &size); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1123 (void) nvlist_lookup_uint8_array(nvl, FM_SUSPECT_FAULT_STATUS, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1124 &ba, &size); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1125 for (i = 0; i < size; i++) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1126 extract_record_info(nva[i], &class, &fru, &serial, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1127 &resource, &asru, ba[i]); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1128 if (!(ba[i] & FM_SUSPECT_NOT_PRESENT) && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1129 (ba[i] & FM_SUSPECT_FAULTY)) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1130 any_present = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1131 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1132 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1133 * also suppress if no resources present |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1134 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1135 if (any_present == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1136 not_suppressed = 0; |
0 | 1137 } |
1138 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1139 uurec_p = (uurec_t *)malloc(sizeof (uurec_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1140 uurec_p->uuid = strdup(uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1141 uurec_p->sec = sec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1142 uurec_p->ari_uuid_list = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1143 host = find_hostid(nvl); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1144 if (not_suppressed && !opt_g) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1145 status_rec_p = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1146 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1147 status_rec_p = record_in_catalog(class, fru, msgid, host); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1148 if (status_rec_p) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1149 catalog_merge_record(status_rec_p, uurec_p, asru, resource, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1150 serial, url, not_suppressed); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1151 free_name_list(class); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1152 free_name_list(fru); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1153 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1154 catalog_new_record(uurec_p, msgid, class, fru, asru, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1155 resource, serial, url, not_suppressed, host); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1156 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1157 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1158 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1159 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1160 update_asru_state_in_catalog(const char *uuid, const char *ari_uuid) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1161 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1162 sr_list_t *srp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1163 uurec_t *uurp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1164 ari_list_t *ari_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1165 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1166 srp = status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1167 if (srp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1168 for (;;) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1169 uurp = srp->status_record->uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1170 while (uurp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1171 if (strcmp(uuid, uurp->uuid) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1172 ari_list = (ari_list_t *) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1173 malloc(sizeof (ari_list_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1174 ari_list->ari_uuid = strdup(ari_uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1175 ari_list->next = uurp->ari_uuid_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1176 uurp->ari_uuid_list = ari_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1177 return; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1178 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1179 uurp = uurp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1180 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1181 if (srp->next == status_rec_list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1182 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1183 srp = srp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1184 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1185 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1186 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1187 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1188 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1189 print_line(char *label, char *buf) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1190 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1191 char *cp, *ep, *wp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1192 char c; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1193 int i; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1194 int lsz; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1195 char *padding; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1196 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1197 lsz = strlen(label); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1198 padding = malloc(lsz + 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1199 for (i = 0; i < lsz; i++) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1200 padding[i] = ' '; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1201 padding[i] = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1202 cp = buf; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1203 ep = buf; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1204 c = *ep; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1205 (void) printf("\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1206 while (c) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1207 i = lsz; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1208 wp = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1209 while ((c = *ep) != NULL && (wp == NULL || i < 80)) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1210 if (c == ' ') |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1211 wp = ep; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1212 else if (c == '\n') { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1213 i = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1214 *ep = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1215 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1216 ep++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1217 } while ((c = *ep) != NULL && c == ' '); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1218 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1219 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1220 ep++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1221 i++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1222 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1223 if (i >= 80 && wp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1224 *wp = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1225 ep = wp + 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1226 c = *ep; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1227 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1228 (void) printf("%s%s\n", label, cp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1229 cp = ep; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1230 label = padding; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1231 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1232 free(padding); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1233 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1234 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1235 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1236 print_dict_info(char *msgid, char *url) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1237 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1238 const char *cp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1239 char *l_url; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1240 char *buf; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1241 int bufsz; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1242 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1243 cp = get_dict_msg(msgid, "description", 0, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1244 if (cp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1245 if (url) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1246 l_url = url; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1247 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1248 l_url = get_dict_url(msgid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1249 bufsz = strlen(cp) + strlen(l_url) + 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1250 buf = malloc(bufsz); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1251 (void) snprintf(buf, bufsz, cp, l_url); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1252 print_line(dgettext("FMD", "Description : "), buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1253 free(buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1254 if (!url) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1255 free(l_url); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1256 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1257 cp = get_dict_msg(msgid, "response", 0, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1258 if (cp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1259 buf = strdup(cp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1260 print_line(dgettext("FMD", "Response : "), buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1261 free(buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1262 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1263 cp = get_dict_msg(msgid, "impact", 0, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1264 if (cp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1265 buf = strdup(cp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1266 print_line(dgettext("FMD", "Impact : "), buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1267 free(buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1268 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1269 cp = get_dict_msg(msgid, "action", 0, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1270 if (cp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1271 buf = strdup(cp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1272 print_line(dgettext("FMD", "Action : "), buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1273 free(buf); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1274 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1275 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1276 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1277 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1278 print_name(name_list_t *list, char *(func)(char *), char *padding, int *np, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1279 int pct, int full) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1280 { |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1281 char *name, *fru_label = NULL; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1282 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1283 name = list->name; |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1284 if (list->label) { |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1285 (void) printf("%s \"%s\" (%s)", padding, list->label, name); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1286 *np += 1; |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1287 } else if (func && (fru_label = func(list->name)) != NULL) { |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1288 (void) printf("%s \"%s\" (%s)", padding, fru_label, name); |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1289 *np += 1; |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1290 free(fru_label); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1291 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1292 (void) printf("%s %s", padding, name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1293 *np += 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1294 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1295 if (list->pct && pct > 0 && pct < 100) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1296 if (list->count > 1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1297 if (full) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1298 (void) printf(" %d @ %s %d%%\n", list->count, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1299 dgettext("FMD", "max"), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1300 list->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1301 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1302 (void) printf(" %s %d%%\n", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1303 dgettext("FMD", "max"), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1304 list->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1305 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1306 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1307 (void) printf(" %d%%\n", list->pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1308 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1309 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1310 (void) printf("\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1311 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1312 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1313 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1314 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1315 print_asru_status(int status, char *label) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1316 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1317 char *msg = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1318 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1319 switch (status) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1320 case 0: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1321 msg = dgettext("FMD", "ok and in service"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1322 break; |
7275 | 1323 case FM_SUSPECT_DEGRADED: |
1324 msg = dgettext("FMD", "service degraded, " | |
1325 "but associated components no longer faulty"); | |
1326 break; | |
1327 case FM_SUSPECT_FAULTY | FM_SUSPECT_DEGRADED: | |
1328 msg = dgettext("FMD", "faulted but still " | |
1329 "providing degraded service"); | |
1330 break; | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1331 case FM_SUSPECT_FAULTY: |
7275 | 1332 msg = dgettext("FMD", "faulted but still in service"); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1333 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1334 case FM_SUSPECT_UNUSABLE: |
7275 | 1335 msg = dgettext("FMD", "out of service, " |
1336 "but associated components no longer faulty"); | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1337 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1338 case FM_SUSPECT_FAULTY | FM_SUSPECT_UNUSABLE: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1339 msg = dgettext("FMD", "faulted and taken out of service"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1340 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1341 default: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1342 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1343 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1344 if (msg) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1345 (void) printf("%s %s\n", label, msg); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1346 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1347 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1348 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1349 static void |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1350 print_fru_status(int status, char *label) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1351 { |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1352 char *msg = NULL; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1353 |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1354 if (status & FM_SUSPECT_NOT_PRESENT) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1355 msg = dgettext("FMD", "not present"); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1356 else if (status & FM_SUSPECT_FAULTY) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1357 msg = dgettext("FMD", "faulty"); |
7275 | 1358 else if (status & FM_SUSPECT_REPLACED) |
1359 msg = dgettext("FMD", "replaced"); | |
1360 else if (status & FM_SUSPECT_REPAIRED) | |
1361 msg = dgettext("FMD", "repair attempted"); | |
1362 else if (status & FM_SUSPECT_ACQUITTED) | |
1363 msg = dgettext("FMD", "acquitted"); | |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1364 else |
7275 | 1365 msg = dgettext("FMD", "removed"); |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1366 (void) printf("%s %s\n", label, msg); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1367 } |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1368 |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1369 static void |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1370 print_name_list(name_list_t *list, char *label, char *(func)(char *), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1371 int limit, int pct, void (func1)(int, char *), int full) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1372 { |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1373 char *name, *fru_label = NULL; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1374 char *padding; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1375 int i, j, l, n; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1376 name_list_t *end = list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1377 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1378 l = strlen(label); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1379 padding = malloc(l + 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1380 for (i = 0; i < l; i++) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1381 padding[i] = ' '; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1382 padding[l] = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1383 (void) printf("%s", label); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1384 name = list->name; |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1385 if (list->label) |
6002 | 1386 (void) printf(" \"%s\" (%s)", list->label, name); |
8245
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1387 else if (func && (fru_label = func(list->name)) != NULL) { |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1388 (void) printf(" \"%s\" (%s)", fru_label, name); |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1389 free(fru_label); |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1390 } else |
7dbd13b3b276
6763249 eft is disabled on fmadm repair when serdsuffix feature is used
Stephen Hanson <Stephen.Hanson@Sun.COM>
parents:
7275
diff
changeset
|
1391 (void) printf(" %s", name); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1392 if (list->pct && pct > 0 && pct < 100) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1393 if (list->count > 1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1394 if (full) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1395 (void) printf(" %d @ %s %d%%\n", list->count, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1396 dgettext("FMD", "max"), list->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1397 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1398 (void) printf(" %s %d%%\n", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1399 dgettext("FMD", "max"), list->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1400 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1401 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1402 (void) printf(" %d%%\n", list->pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1403 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1404 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1405 (void) printf("\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1406 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1407 if (func1) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1408 func1(list->status, padding); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1409 n = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1410 j = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1411 while ((list = list->next) != end) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1412 if (limit == 0 || n < limit) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1413 print_name(list, func, padding, &n, pct, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1414 if (func1) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1415 func1(list->status, padding); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1416 } else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1417 j++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1418 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1419 if (j == 1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1420 print_name(list->prev, func, padding, &n, pct, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1421 } else if (j > 1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1422 (void) printf("%s... %d %s\n", padding, j, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1423 dgettext("FMD", "more entries suppressed," |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1424 " use -v option for full list")); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1425 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1426 free(padding); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1427 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1428 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1429 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1430 asru_same_status(name_list_t *list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1431 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1432 name_list_t *end = list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1433 int status = list->status; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1434 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1435 while ((list = list->next) != end) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1436 if (status == -1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1437 status = list->status; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1438 continue; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1439 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1440 if (list->status != -1 && status != list->status) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1441 status = -1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1442 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1443 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1444 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1445 return (status); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1446 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1447 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1448 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1449 serial_in_fru(name_list_t *fru, name_list_t *serial) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1450 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1451 name_list_t *sp = serial; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1452 name_list_t *fp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1453 int nserial = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1454 int found = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1455 char buf[128]; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1456 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1457 while (sp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1458 fp = fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1459 nserial++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1460 (void) snprintf(buf, sizeof (buf), "serial=%s", sp->name); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1461 buf[sizeof (buf) - 1] = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1462 while (fp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1463 if (strstr(fp->name, buf) != NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1464 found++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1465 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1466 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1467 fp = fp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1468 if (fp == fru) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1469 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1470 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1471 sp = sp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1472 if (sp == serial) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1473 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1474 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1475 return (found == nserial ? 1 : 0); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1476 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1477 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1478 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1479 print_server_name(hostid_t *host, char *label) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1480 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1481 (void) printf("%s %s %s %s\n", label, host->server, host->platform, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1482 host->chassis ? host->chassis : ""); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1483 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1484 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1485 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1486 print_sup_record(status_record_t *srp, int opt_i, int full) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1487 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1488 char buf[32]; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1489 uurec_t *uurp = srp->uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1490 int n, j, k, max; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1491 int status; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1492 ari_list_t *ari_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1493 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1494 n = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1495 max = max_fault; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1496 if (max < 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1497 max = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1498 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1499 j = max / 2; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1500 max -= j; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1501 k = srp->nrecs - max; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1502 while ((uurp = uurp->next) != NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1503 if (full || n < j || n >= k || max_fault == 0 || |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1504 srp->nrecs == max_fault+1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1505 if (opt_i) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1506 ari_list = uurp->ari_uuid_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1507 while (ari_list) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1508 (void) printf("%-15s %s\n", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1509 format_date(buf, sizeof (buf), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1510 uurp->sec), ari_list->ari_uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1511 ari_list = ari_list->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1512 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1513 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1514 (void) printf("%-15s %s\n", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1515 format_date(buf, sizeof (buf), uurp->sec), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1516 uurp->uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1517 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1518 } else if (n == j) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1519 (void) printf("... %d %s\n", srp->nrecs - max_fault, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1520 dgettext("FMD", "more entries suppressed")); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1521 n++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1522 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1523 (void) printf("\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1524 if (n_server > 1) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1525 print_server_name(srp->host, dgettext("FMD", "Host :")); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1526 if (srp->class) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1527 print_name_list(srp->class, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1528 dgettext("FMD", "Fault class :"), NULL, 0, srp->class->pct, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1529 NULL, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1530 if (srp->asru) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1531 status = asru_same_status(srp->asru); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1532 if (status != -1) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1533 print_name_list(srp->asru, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1534 dgettext("FMD", "Affects :"), NULL, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1535 full ? 0 : max_display, 0, NULL, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1536 print_asru_status(status, " "); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1537 } else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1538 print_name_list(srp->asru, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1539 dgettext("FMD", "Affects :"), NULL, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1540 full ? 0 : max_display, 0, print_asru_status, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1541 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1542 if (full || srp->fru == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1543 if (srp->resource) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1544 print_name_list(srp->resource, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1545 dgettext("FMD", "Problem in :"), |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1546 NULL, full ? 0 : max_display, 0, print_fru_status, |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1547 full); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1548 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1549 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1550 if (srp->fru) { |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1551 status = asru_same_status(srp->fru); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1552 if (status != -1) { |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1553 print_name_list(srp->fru, dgettext("FMD", |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1554 "FRU :"), get_fmri_label, 0, |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1555 srp->fru->pct == 100 ? 100 : srp->fru->max_pct, |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1556 NULL, full); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1557 print_fru_status(status, " "); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1558 } else |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1559 print_name_list(srp->fru, dgettext("FMD", |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1560 "FRU :"), get_fmri_label, 0, |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1561 srp->fru->pct == 100 ? 100 : srp->fru->max_pct, |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1562 print_fru_status, full); |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1563 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1564 if (srp->serial && !serial_in_fru(srp->fru, srp->serial) && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1565 !serial_in_fru(srp->asru, srp->serial)) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1566 print_name_list(srp->serial, dgettext("FMD", "Serial ID. :"), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1567 NULL, 0, 0, NULL, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1568 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1569 print_dict_info(srp->msgid, srp->url); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1570 (void) printf("\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1571 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1572 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1573 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1574 print_status_record(status_record_t *srp, int summary, int opt_i, int full) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1575 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1576 char buf[32]; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1577 uurec_t *uurp = srp->uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1578 char *severity; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1579 static int header = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1580 char *head; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1581 ari_list_t *ari_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1582 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1583 if (nlspath) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1584 severity = get_dict_msg(srp->msgid, "severity", 1, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1585 else |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1586 severity = srp->severity; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1587 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1588 if (!summary || !header) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1589 if (opt_i) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1590 head = "--------------- " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1591 "------------------------------------ " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1592 "-------------- ---------\n" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1593 "TIME CACHE-ID" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1594 " MSG-ID" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1595 " SEVERITY\n--------------- " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1596 "------------------------------------ " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1597 " -------------- ---------"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1598 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1599 head = "--------------- " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1600 "------------------------------------ " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1601 "-------------- ---------\n" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1602 "TIME EVENT-ID" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1603 " MSG-ID" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1604 " SEVERITY\n--------------- " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1605 "------------------------------------ " |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1606 " -------------- ---------"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1607 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1608 (void) printf("%s\n", dgettext("FMD", head)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1609 header = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1610 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1611 if (opt_i) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1612 ari_list = uurp->ari_uuid_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1613 while (ari_list) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1614 (void) printf("%-15s %-37s %-14s %-9s\n", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1615 format_date(buf, sizeof (buf), uurp->sec), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1616 ari_list->ari_uuid, srp->msgid, severity); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1617 ari_list = ari_list->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1618 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1619 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1620 (void) printf("%-15s %-37s %-14s %-9s\n", |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1621 format_date(buf, sizeof (buf), uurp->sec), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1622 uurp->uuid, srp->msgid, severity); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1623 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1624 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1625 if (!summary) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1626 print_sup_record(srp, opt_i, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1627 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1628 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1629 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1630 print_catalog(int summary, int opt_a, int full, int opt_i, int page_feed) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1631 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1632 status_record_t *srp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1633 sr_list_t *slp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1634 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1635 slp = status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1636 if (slp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1637 for (;;) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1638 srp = slp->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1639 if (opt_a || srp->not_suppressed) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1640 if (page_feed) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1641 (void) printf("\f\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1642 print_status_record(srp, summary, opt_i, full); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1643 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1644 if (slp->next == status_rec_list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1645 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1646 slp = slp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1647 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1648 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1649 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1650 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1651 static name_list_t * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1652 find_fru(status_record_t *srp, char *resource) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1653 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1654 name_list_t *rt = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1655 name_list_t *fru = srp->fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1656 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1657 while (fru) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1658 if (strcmp(resource, fru->name) == 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1659 rt = fru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1660 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1661 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1662 fru = fru->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1663 if (fru == srp->fru) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1664 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1665 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1666 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1667 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1668 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1669 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1670 print_fru_line(name_list_t *fru, char *uuid) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1671 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1672 if (fru->pct == 100) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1673 (void) printf("%s %d %s %d%%\n", uuid, fru->count, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1674 dgettext("FMD", "suspects in this FRU total certainty"), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1675 100); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1676 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1677 (void) printf("%s %d %s %d%%\n", uuid, fru->count, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1678 dgettext("FMD", "suspects in this FRU max certainty"), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1679 fru->max_pct); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1680 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1681 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1682 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1683 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1684 print_fru(int summary, int opt_a, int opt_i, int page_feed) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1685 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1686 resource_list_t *tp = status_fru_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1687 status_record_t *srp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1688 sr_list_t *slp, *end; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1689 char *msgid, *fru_label; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1690 uurec_t *uurp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1691 name_list_t *fru; |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1692 int status; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1693 ari_list_t *ari_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1694 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1695 while (tp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1696 if (opt_a || tp->not_suppressed) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1697 if (page_feed) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1698 (void) printf("\f\n"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1699 if (!summary) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1700 (void) printf("-----------------------------" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1701 "---------------------------------------" |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1702 "----------\n"); |
6002 | 1703 slp = tp->status_rec_list; |
1704 end = slp; | |
1705 do { | |
1706 srp = slp->status_record; | |
1707 fru = find_fru(srp, tp->resource); | |
1708 if (fru) { | |
1709 if (fru->label) | |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1710 (void) printf("\"%s\" (%s) ", |
6002 | 1711 fru->label, fru->name); |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1712 else if ((fru_label = get_fmri_label( |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1713 fru->name)) != NULL) { |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1714 (void) printf("\"%s\" (%s) ", |
6002 | 1715 fru_label, fru->name); |
1716 free(fru_label); | |
1717 } else | |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1718 (void) printf("%s ", |
6002 | 1719 fru->name); |
1720 break; | |
1721 } | |
1722 slp = slp->next; | |
1723 } while (slp != end); | |
1724 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1725 slp = tp->status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1726 end = slp; |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1727 status = 0; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1728 do { |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1729 srp = slp->status_record; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1730 fru = srp->fru; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1731 while (fru) { |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1732 if (strcmp(tp->resource, |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1733 fru->name) == 0) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1734 status |= fru->status; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1735 fru = fru->next; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1736 if (fru == srp->fru) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1737 break; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1738 } |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1739 slp = slp->next; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1740 } while (slp != end); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1741 if (status & FM_SUSPECT_NOT_PRESENT) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1742 (void) printf(dgettext("FMD", "not present\n")); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1743 else if (status & FM_SUSPECT_FAULTY) |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1744 (void) printf(dgettext("FMD", "faulty\n")); |
7275 | 1745 else if (status & FM_SUSPECT_REPLACED) |
1746 (void) printf(dgettext("FMD", "replaced\n")); | |
1747 else if (status & FM_SUSPECT_REPAIRED) | |
1748 (void) printf(dgettext("FMD", | |
1749 "repair attempted\n")); | |
1750 else if (status & FM_SUSPECT_ACQUITTED) | |
1751 (void) printf(dgettext("FMD", "acquitted\n")); | |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1752 else |
7275 | 1753 (void) printf(dgettext("FMD", "removed\n")); |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1754 |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1755 slp = tp->status_rec_list; |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
1756 end = slp; |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1757 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1758 srp = slp->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1759 uurp = srp->uurec; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1760 fru = find_fru(srp, tp->resource); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1761 if (fru) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1762 if (opt_i) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1763 ari_list = uurp->ari_uuid_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1764 while (ari_list) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1765 print_fru_line(fru, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1766 ari_list->ari_uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1767 ari_list = |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1768 ari_list->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1769 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1770 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1771 print_fru_line(fru, uurp->uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1772 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1773 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1774 slp = slp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1775 } while (slp != end); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1776 if (!summary) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1777 slp = tp->status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1778 end = slp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1779 srp = slp->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1780 if (srp->serial && |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1781 !serial_in_fru(srp->fru, srp->serial)) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1782 print_name_list(srp->serial, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1783 dgettext("FMD", "Serial ID. :"), |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1784 NULL, 0, 0, NULL, 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1785 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1786 msgid = NULL; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1787 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1788 if (msgid == NULL || |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1789 strcmp(msgid, srp->msgid) != 0) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1790 msgid = srp->msgid; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1791 print_dict_info(srp->msgid, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1792 srp->url); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1793 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1794 slp = slp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1795 } while (slp != end); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1796 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1797 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1798 tp = tp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1799 if (tp == status_fru_list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1800 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1801 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1802 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1803 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1804 static void |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1805 print_asru(int opt_a) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1806 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1807 resource_list_t *tp = status_asru_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1808 status_record_t *srp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1809 sr_list_t *slp, *end; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1810 char *msg; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1811 int status; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1812 name_list_t *asru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1813 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1814 while (tp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1815 if (opt_a || tp->not_suppressed) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1816 status = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1817 slp = tp->status_rec_list; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1818 end = slp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1819 do { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1820 srp = slp->status_record; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1821 asru = srp->asru; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1822 while (asru) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1823 if (strcmp(tp->resource, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1824 asru->name) == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1825 status |= asru->status; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1826 asru = asru->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1827 if (asru == srp->asru) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1828 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1829 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1830 slp = slp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1831 } while (slp != end); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1832 switch (status) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1833 case 0: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1834 msg = dgettext("FMD", "ok"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1835 break; |
7275 | 1836 case FM_SUSPECT_DEGRADED: |
1837 msg = dgettext("FMD", "degraded"); | |
1838 break; | |
1839 case FM_SUSPECT_FAULTY | FM_SUSPECT_DEGRADED: | |
1840 msg = dgettext("FMD", "degraded"); | |
1841 break; | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1842 case FM_SUSPECT_FAULTY: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1843 msg = dgettext("FMD", "degraded"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1844 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1845 case FM_SUSPECT_UNUSABLE: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1846 msg = dgettext("FMD", "unknown"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1847 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1848 case FM_SUSPECT_FAULTY | FM_SUSPECT_UNUSABLE: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1849 msg = dgettext("FMD", "faulted"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1850 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1851 default: |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1852 msg = ""; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1853 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1854 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1855 (void) printf("%-69s %s\n", tp->resource, msg); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1856 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1857 tp = tp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1858 if (tp == status_asru_list) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1859 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1860 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1861 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1862 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1863 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1864 uuid_in_list(char *uuid, uurec_select_t *uurecp) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1865 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1866 while (uurecp) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1867 if (strcmp(uuid, uurecp->uuid) == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1868 return (1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1869 uurecp = uurecp->next; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1870 } |
0 | 1871 return (0); |
1872 } | |
1873 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1874 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1875 dfault_rec(const fmd_adm_caseinfo_t *acp, void *arg) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1876 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1877 int64_t *diag_time; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1878 uint_t nelem; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1879 int rt = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1880 char *uuid = "-"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1881 uurec_select_t *uurecp = (uurec_select_t *)arg; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1882 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1883 if (nvlist_lookup_int64_array(acp->aci_event, FM_SUSPECT_DIAG_TIME, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1884 &diag_time, &nelem) == 0 && nelem >= 2) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1885 (void) nvlist_lookup_string(acp->aci_event, FM_SUSPECT_UUID, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1886 &uuid); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1887 if (uurecp == NULL || uuid_in_list(uuid, uurecp)) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1888 add_fault_record_to_catalog(acp->aci_event, *diag_time, |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1889 uuid, acp->aci_url); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1890 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1891 rt = -1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1892 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1893 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1894 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1895 |
0 | 1896 /*ARGSUSED*/ |
1897 static int | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1898 dstatus_rec(const fmd_adm_rsrcinfo_t *ari, void *unused) |
0 | 1899 { |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1900 update_asru_state_in_catalog(ari->ari_case, ari->ari_uuid); |
0 | 1901 return (0); |
1902 } | |
1903 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1904 static int |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1905 get_cases_from_fmd(fmd_adm_t *adm, uurec_select_t *uurecp, int opt_i) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1906 { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1907 int rt = FMADM_EXIT_SUCCESS; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1908 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1909 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1910 * These calls may fail with Protocol error if message payload is to big |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1911 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1912 if (fmd_adm_case_iter(adm, NULL, dfault_rec, uurecp) != 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1913 die("failed to get case list from fmd"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1914 if (opt_i && fmd_adm_rsrc_iter(adm, 1, dstatus_rec, NULL) != 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1915 die("failed to get case status from fmd"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1916 return (rt); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1917 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1918 |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1919 /* |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1920 * fmadm faulty command |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1921 * |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1922 * -a show hidden fault records |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1923 * -f show faulty fru's |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1924 * -g force grouping of similar faults on the same fru |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1925 * -n number of fault records to display |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1926 * -p pipe output through pager |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1927 * -r show faulty asru's |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1928 * -s print summary of first fault |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1929 * -u print listed uuid's only |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1930 * -v full output |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1931 */ |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1932 |
0 | 1933 int |
1934 cmd_faulty(fmd_adm_t *adm, int argc, char *argv[]) | |
1935 { | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1936 int opt_a = 0, opt_v = 0, opt_p = 0, opt_s = 0, opt_r = 0, opt_f = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1937 int opt_i = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1938 char *pager; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1939 FILE *fp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1940 int rt, c, stat; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1941 uurec_select_t *tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1942 uurec_select_t *uurecp = NULL; |
0 | 1943 |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1944 catalog_setup(); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1945 while ((c = getopt(argc, argv, "afgin:prsu:v")) != EOF) { |
0 | 1946 switch (c) { |
1947 case 'a': | |
1948 opt_a++; | |
1949 break; | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1950 case 'f': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1951 opt_f++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1952 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1953 case 'g': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1954 opt_g++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1955 break; |
0 | 1956 case 'i': |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1957 opt_i++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1958 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1959 case 'n': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1960 max_fault = atoi(optarg); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1961 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1962 case 'p': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1963 opt_p++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1964 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1965 case 'r': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1966 opt_r++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1967 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1968 case 's': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1969 opt_s++; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1970 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1971 case 'u': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1972 tp = (uurec_select_t *)malloc(sizeof (uurec_select_t)); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1973 tp->uuid = optarg; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1974 tp->next = uurecp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1975 uurecp = tp; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1976 opt_a = 1; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1977 break; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1978 case 'v': |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1979 opt_v++; |
0 | 1980 break; |
1981 default: | |
1982 return (FMADM_EXIT_USAGE); | |
1983 } | |
1984 } | |
1985 if (optind < argc) | |
1986 return (FMADM_EXIT_USAGE); | |
1987 | |
5255
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1988 rt = get_cases_from_fmd(adm, uurecp, opt_i); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1989 if (opt_p) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1990 if ((pager = getenv("PAGER")) == NULL) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1991 pager = "/usr/bin/more"; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1992 fp = popen(pager, "w"); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1993 if (fp == NULL) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1994 rt = FMADM_EXIT_ERROR; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1995 opt_p = 0; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1996 } else { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1997 dup2(fileno(fp), 1); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1998 setbuf(stdout, NULL); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
1999 (void) fclose(fp); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2000 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2001 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2002 max_display = max_fault; |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2003 if (opt_f) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2004 print_fru(opt_s, opt_a, opt_i, opt_p && !opt_s); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2005 if (opt_r) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2006 print_asru(opt_a); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2007 if (opt_f == 0 && opt_r == 0) |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2008 print_catalog(opt_s, opt_a, opt_v, opt_i, opt_p && !opt_s); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2009 label_release_topo(); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2010 if (opt_p) { |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2011 (void) fclose(stdout); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2012 (void) wait(&stat); |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2013 } |
8dc347a9bd70
PSARC 2007/460 fmadm faulty command new output and arguments
stephh
parents:
0
diff
changeset
|
2014 return (rt); |
0 | 2015 } |
2016 | |
2017 int | |
2018 cmd_flush(fmd_adm_t *adm, int argc, char *argv[]) | |
2019 { | |
2020 int i, status = FMADM_EXIT_SUCCESS; | |
2021 | |
2022 if (argc < 2 || (i = getopt(argc, argv, "")) != EOF) | |
2023 return (FMADM_EXIT_USAGE); | |
2024 | |
2025 for (i = 1; i < argc; i++) { | |
2026 if (fmd_adm_rsrc_flush(adm, argv[i]) != 0) { | |
2027 warn("failed to flush %s", argv[i]); | |
2028 status = FMADM_EXIT_ERROR; | |
2029 } else | |
2030 note("flushed resource history for %s\n", argv[i]); | |
2031 } | |
2032 | |
2033 return (status); | |
2034 } | |
2035 | |
2036 int | |
2037 cmd_repair(fmd_adm_t *adm, int argc, char *argv[]) | |
2038 { | |
2039 int err; | |
2040 | |
2041 if (getopt(argc, argv, "") != EOF) | |
2042 return (FMADM_EXIT_USAGE); | |
2043 | |
2044 if (argc - optind != 1) | |
2045 return (FMADM_EXIT_USAGE); | |
2046 | |
2047 /* | |
7275 | 2048 * argument could be a uuid, an fmri (asru, fru or resource) |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
2049 * or a label. Try uuid first, If that fails try the others. |
0 | 2050 */ |
6228
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
2051 err = fmd_adm_case_repair(adm, argv[optind]); |
b8f7c3bfc29b
6372069 fmadm repair command should accept the FRU label as an argument
stephh
parents:
6002
diff
changeset
|
2052 if (err != 0) |
7275 | 2053 err = fmd_adm_rsrc_repaired(adm, argv[optind]); |
0 | 2054 |
2055 if (err != 0) | |
2056 die("failed to record repair to %s", argv[optind]); | |
2057 | |
2058 note("recorded repair to %s\n", argv[optind]); | |
2059 return (FMADM_EXIT_SUCCESS); | |
2060 } | |
7275 | 2061 |
2062 int | |
2063 cmd_repaired(fmd_adm_t *adm, int argc, char *argv[]) | |
2064 { | |
2065 int err; | |
2066 | |
2067 if (getopt(argc, argv, "") != EOF) | |
2068 return (FMADM_EXIT_USAGE); | |
2069 | |
2070 if (argc - optind != 1) | |
2071 return (FMADM_EXIT_USAGE); | |
2072 | |
2073 /* | |
2074 * argument could be an fmri (asru, fru or resource) or a label. | |
2075 */ | |
2076 err = fmd_adm_rsrc_repaired(adm, argv[optind]); | |
2077 if (err != 0) | |
2078 die("failed to record repair to %s", argv[optind]); | |
2079 | |
2080 note("recorded repair to of %s\n", argv[optind]); | |
2081 return (FMADM_EXIT_SUCCESS); | |
2082 } | |
2083 | |
2084 int | |
2085 cmd_replaced(fmd_adm_t *adm, int argc, char *argv[]) | |
2086 { | |
2087 int err; | |
2088 | |
2089 if (getopt(argc, argv, "") != EOF) | |
2090 return (FMADM_EXIT_USAGE); | |
2091 | |
2092 if (argc - optind != 1) | |
2093 return (FMADM_EXIT_USAGE); | |
2094 | |
2095 /* | |
2096 * argument could be an fmri (asru, fru or resource) or a label. | |
2097 */ | |
2098 err = fmd_adm_rsrc_replaced(adm, argv[optind]); | |
2099 if (err != 0) | |
2100 die("failed to record replacement of %s", argv[optind]); | |
2101 | |
2102 note("recorded replacement of %s\n", argv[optind]); | |
2103 return (FMADM_EXIT_SUCCESS); | |
2104 } | |
2105 | |
2106 int | |
2107 cmd_acquit(fmd_adm_t *adm, int argc, char *argv[]) | |
2108 { | |
2109 int err; | |
2110 | |
2111 if (getopt(argc, argv, "") != EOF) | |
2112 return (FMADM_EXIT_USAGE); | |
2113 | |
2114 if (argc - optind != 1 && argc - optind != 2) | |
2115 return (FMADM_EXIT_USAGE); | |
2116 | |
2117 /* | |
2118 * argument could be a uuid, an fmri (asru, fru or resource) | |
2119 * or a label. Or it could be a uuid and an fmri or label. | |
2120 */ | |
2121 if (argc - optind == 2) { | |
2122 err = fmd_adm_rsrc_acquit(adm, argv[optind], argv[optind + 1]); | |
2123 if (err != 0) | |
2124 err = fmd_adm_rsrc_acquit(adm, argv[optind + 1], | |
2125 argv[optind]); | |
2126 } else { | |
2127 err = fmd_adm_case_acquit(adm, argv[optind]); | |
2128 if (err != 0) | |
2129 err = fmd_adm_rsrc_acquit(adm, argv[optind], ""); | |
2130 } | |
2131 | |
2132 if (err != 0) | |
2133 die("failed to record acquital of %s", argv[optind]); | |
2134 | |
2135 note("recorded acquital of %s\n", argv[optind]); | |
2136 return (FMADM_EXIT_SUCCESS); | |
2137 } |