annotate usr/src/cmd/fm/fmtopo/common/fmtopo.c @ 12979:ab9ae749152f

PSARC/2009/617 Software Events Notification Parameters CLI PSARC/2009/618 snmp-notify: SNMP Notification Daemon for Software Events PSARC/2009/619 smtp-notify: Email Notification Daemon for Software Events PSARC/2010/225 fmd for non-global Solaris zones PSARC/2010/226 Solaris Instance UUID PSARC/2010/227 nvlist_nvflag(3NVPAIR) PSARC/2010/228 libfmevent additions PSARC/2010/257 sysevent_evc_setpropnvl and sysevent_evc_getpropnvl PSARC/2010/265 FMRI and FMA Event Stabilty, 'ireport' category 1 event class, and the 'sw' FMRI scheme PSARC/2010/278 FMA/SMF integration: instance state transitions PSARC/2010/279 Modelling panics within FMA PSARC/2010/290 logadm.conf upgrade 6392476 fmdump needs to pretty-print 6393375 userland ereport/ireport event generation interfaces 6445732 Add email notification agent for FMA and software events 6804168 RFE: Allow an efficient means to monitor SMF services status changes 6866661 scf_values_destroy(3SCF) will segfault if is passed NULL 6884709 Add snmp notification agent for FMA and software events 6884712 Add private interface to tap into libfmd_msg macro expansion capabilities 6897919 fmd to run in a non-global zone 6897937 fmd use of non-private doors is not safe 6900081 add a UUID to Solaris kernel image for use in crashdump identification 6914884 model panic events as a defect diagnosis in FMA 6944862 fmd_case_open_uuid, fmd_case_uuisresolved, fmd_nvl_create_defect 6944866 log legacy sysevents in fmd 6944867 enumerate svc scheme in topo 6944868 software-diagnosis and software-response fmd modules 6944870 model SMF maintenance state as a defect diagnosis in FMA 6944876 savecore runs in foreground for systems with zfs root and dedicated dump 6965796 Implement notification parameters for SMF state transitions and FMA events 6968287 SUN-FM-MIB.mib needs to be updated to reflect Oracle information 6972331 logadm.conf upgrade PSARC/2010/290
author Gavin Maltby <gavin.maltby@oracle.com>
date Fri, 30 Jul 2010 17:04:17 +1000
parents be69f645ce17
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
1 /*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
2 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
3 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
5 * Common Development and Distribution License (the "License").
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
6 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
7 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
10 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
11 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
12 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
18 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
19 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
20 */
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
21
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
22 /*
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
23 * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
24 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
25
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
26
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
27 #include <sys/fm/protocol.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
28 #include <fm/libtopo.h>
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
29 #include <ctype.h>
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
30 #include <fnmatch.h>
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
31 #include <limits.h>
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
32 #include <strings.h>
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
33 #include <stdio.h>
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
34 #include <errno.h>
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
35 #include <umem.h>
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
36 #include <zone.h>
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
37 #include <sys/param.h>
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
38
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
39 #define FMTOPO_EXIT_SUCCESS 0
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
40 #define FMTOPO_EXIT_ERROR 1
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
41 #define FMTOPO_EXIT_USAGE 2
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
42
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
43 #define STDERR "stderr"
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
44 #define DOTS "..."
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
45 #define ALL "all"
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
46
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
47 static const char *g_pname;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
48 static const char *g_fmri = NULL;
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
49
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
50 static const char *opt_R = "/";
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
51 static const char *opt_s = FM_FMRI_SCHEME_HC;
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
52 static const char optstr[] = "bCdem:P:pR:s:StVx";
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
53 static const char *opt_m;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
54
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
55 static int opt_b = 0;
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
56 static int opt_d = 0;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
57 static int opt_e = 0;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
58 static int opt_p = 0;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
59 static int opt_S = 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
60 static int opt_t = 0;
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
61 static int opt_V = 0;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
62 static int opt_x = 0;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
63 static int opt_all = 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
64
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
65 struct prop_args {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
66 const char *group;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
67 const char *prop;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
68 const char *type;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
69 const char *value;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
70 };
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
71
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
72 static struct prop_args **pargs = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
73 static int pcnt = 0;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
74
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
75 static int
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
76 usage(FILE *fp)
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
77 {
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
78 (void) fprintf(fp,
7585
6bd9ced8f8a6 6735704 deadlock in topo_node_facility()
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7243
diff changeset
79 "Usage: %s [-bCedpSVx] [-P group.property[=type:value]] "
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
80 "[-R root] [-m method] [-s scheme] [fmri]\n", g_pname);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
81
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
82 (void) fprintf(fp,
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
83 "\t-b walk in sibling-first order (default is child-first)\n"
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
84 "\t-C dump core after completing execution\n"
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
85 "\t-d set debug mode for libtopo modules\n"
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
86 "\t-e display FMRIs as paths using esc/eft notation\n"
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
87 "\t-m execute given method\n"
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
88 "\t-P get/set specified properties\n"
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
89 "\t-p display of FMRI protocol properties\n"
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
90 "\t-R set root directory for libtopo plug-ins and other files\n"
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
91 "\t-s display topology for the specified FMRI scheme\n"
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
92 "\t-S display FMRI status (present/usable)\n"
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
93 "\t-V set verbose mode\n"
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
94 "\t-x display a xml formatted topology\n");
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
95
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
96 return (FMTOPO_EXIT_USAGE);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
97 }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
98
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
99 static topo_type_t
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
100 str2type(const char *tstr)
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
101 {
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
102 topo_type_t type;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
103
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
104 if (tstr == NULL)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
105 return (TOPO_TYPE_INVALID);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
106
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
107 if (strcmp(tstr, "int32") == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
108 type = TOPO_TYPE_INT32;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
109 else if (strcmp(tstr, "uint32") == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
110 type = TOPO_TYPE_UINT32;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
111 else if (strcmp(tstr, "int64") == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
112 type = TOPO_TYPE_INT64;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
113 else if (strcmp(tstr, "uint64") == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
114 type = TOPO_TYPE_UINT64;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
115 else if (strcmp(tstr, "string") == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
116 type = TOPO_TYPE_STRING;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
117 else if (strcmp(tstr, "fmri") == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
118 type = TOPO_TYPE_FMRI;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
119 else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
120 type = TOPO_TYPE_INVALID;
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
121 }
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
122
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
123 return (type);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
124 }
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
125
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
126 static void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
127 print_node(topo_hdl_t *thp, tnode_t *node, nvlist_t *nvl, const char *fmri)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
128 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
129 int err, ret;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
130
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
131 (void) printf("%s\n", (char *)fmri);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
132
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
133 if (opt_p && !(pcnt > 0 || opt_V || opt_all)) {
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
134 char *aname = NULL, *fname = NULL, *lname = NULL;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
135 nvlist_t *asru = NULL;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
136 nvlist_t *fru = NULL;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
137
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
138 if (topo_node_asru(node, &asru, NULL, &err) == 0)
4328
fe6ac87d8e60 6547176 libtopo leaks memory on failure
cindi
parents: 4087
diff changeset
139 (void) topo_fmri_nvl2str(thp, asru, &aname, &err);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
140 if (topo_node_fru(node, &fru, NULL, &err) == 0)
4328
fe6ac87d8e60 6547176 libtopo leaks memory on failure
cindi
parents: 4087
diff changeset
141 (void) topo_fmri_nvl2str(thp, fru, &fname, &err);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
142 (void) topo_node_label(node, &lname, &err);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
143 if (aname != NULL) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
144 nvlist_free(asru);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
145 (void) printf("\tASRU: %s\n", aname);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
146 topo_hdl_strfree(thp, aname);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
147 } else {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
148 (void) printf("\tASRU: -\n");
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
149 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
150 if (fname != NULL) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
151 nvlist_free(fru);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
152 (void) printf("\tFRU: %s\n", fname);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
153 topo_hdl_strfree(thp, fname);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
154 } else {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
155 (void) printf("\tFRU: -\n");
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
156 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
157 if (lname != NULL) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
158 (void) printf("\tLabel: %s\n", lname);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
159 topo_hdl_strfree(thp, lname);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
160 } else {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
161 (void) printf("\tLabel: -\n");
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
162 }
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
163 }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
164
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
165 if (opt_S) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
166 if ((ret = topo_fmri_present(thp, nvl, &err)) < 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
167 (void) printf("\tPresent: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
168 else
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
169 (void) printf("\tPresent: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
170 ret ? "true" : "false");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
171
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
172 if ((ret = topo_fmri_unusable(thp, nvl, &err)) < 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
173 (void) printf("\tUnusable: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
174 else
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
175 (void) printf("\tUnusable: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
176 ret ? "true" : "false");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
177 }
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
178 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
179
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
180 static void
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
181 print_everstyle(tnode_t *node)
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
182 {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
183 char buf[PATH_MAX], numbuf[64];
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
184 nvlist_t *fmri, **hcl;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
185 int i, err;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
186 uint_t n;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
187
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
188 if (topo_prop_get_fmri(node, TOPO_PGROUP_PROTOCOL,
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
189 TOPO_PROP_RESOURCE, &fmri, &err) < 0) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
190 (void) fprintf(stderr, "%s: failed to get fmri for %s=%d: %s\n",
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
191 g_pname, topo_node_name(node),
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
192 topo_node_instance(node), topo_strerror(err));
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
193 return;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
194 }
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
195
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
196 if (nvlist_lookup_nvlist_array(fmri, FM_FMRI_HC_LIST, &hcl, &n) != 0) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
197 (void) fprintf(stderr, "%s: failed to find %s for %s=%d\n",
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
198 g_pname, FM_FMRI_HC_LIST, topo_node_name(node),
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
199 topo_node_instance(node));
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
200 nvlist_free(fmri);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
201 return;
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
202 }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
203
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
204 buf[0] = '\0';
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
205
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
206 for (i = 0; i < n; i++) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
207 char *name, *inst, *estr;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
208 ulong_t ul;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
209
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
210 if (nvlist_lookup_string(hcl[i], FM_FMRI_HC_NAME, &name) != 0 ||
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
211 nvlist_lookup_string(hcl[i], FM_FMRI_HC_ID, &inst) != 0) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
212 (void) fprintf(stderr, "%s: failed to get "
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
213 "name-instance for %s=%d\n", g_pname,
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
214 topo_node_name(node), topo_node_instance(node));
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
215 nvlist_free(fmri);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
216 return;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
217 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
218
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
219 errno = 0;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
220 ul = strtoul(inst, &estr, 10);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
221
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
222 if (errno != 0 || estr == inst) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
223 (void) fprintf(stderr, "%s: instance %s does not "
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
224 "convert to an unsigned integer\n", g_pname, inst);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
225 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
226
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
227 (void) strlcat(buf, "/", sizeof (buf));
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
228 (void) strlcat(buf, name, sizeof (buf));
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
229 (void) snprintf(numbuf, sizeof (numbuf), "%u", ul);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
230 (void) strlcat(buf, numbuf, sizeof (buf));
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
231 }
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
232 nvlist_free(fmri);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
233
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
234 (void) printf("%s\n", buf);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
235 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
236
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
237 static void
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
238 print_prop_nameval(topo_hdl_t *thp, tnode_t *node, nvlist_t *nvl)
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
239 {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
240 int err;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
241 topo_type_t type;
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
242 char *tstr, *propn, buf[48], *factype;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
243 nvpair_t *pv_nvp;
3323
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
244 int i;
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
245 uint_t nelem;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
246
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
247 if ((pv_nvp = nvlist_next_nvpair(nvl, NULL)) == NULL)
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
248 return;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
249
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
250 /* Print property name */
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
251 if ((pv_nvp = nvlist_next_nvpair(nvl, NULL)) == NULL ||
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
252 nvpair_name(pv_nvp) == NULL ||
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
253 strcmp(TOPO_PROP_VAL_NAME, nvpair_name(pv_nvp)) != 0) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
254 (void) fprintf(stderr, "%s: malformed property name\n",
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
255 g_pname);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
256 return;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
257 } else {
4328
fe6ac87d8e60 6547176 libtopo leaks memory on failure
cindi
parents: 4087
diff changeset
258 (void) nvpair_value_string(pv_nvp, &propn);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
259 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
260
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
261 if ((pv_nvp = nvlist_next_nvpair(nvl, pv_nvp)) == NULL ||
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
262 nvpair_name(pv_nvp) == NULL ||
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
263 strcmp(nvpair_name(pv_nvp), TOPO_PROP_VAL_TYPE) != 0 ||
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
264 nvpair_type(pv_nvp) != DATA_TYPE_UINT32) {
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
265 (void) fprintf(stderr, "%s: malformed property type for %s\n",
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
266 g_pname, propn);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
267 return;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
268 } else {
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
269 (void) nvpair_value_uint32(pv_nvp, (uint32_t *)&type);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
270 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
271
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
272 switch (type) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
273 case TOPO_TYPE_BOOLEAN: tstr = "boolean"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
274 case TOPO_TYPE_INT32: tstr = "int32"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
275 case TOPO_TYPE_UINT32: tstr = "uint32"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
276 case TOPO_TYPE_INT64: tstr = "int64"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
277 case TOPO_TYPE_UINT64: tstr = "uint64"; break;
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
278 case TOPO_TYPE_DOUBLE: tstr = "double"; break;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
279 case TOPO_TYPE_STRING: tstr = "string"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
280 case TOPO_TYPE_FMRI: tstr = "fmri"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
281 case TOPO_TYPE_INT32_ARRAY: tstr = "int32[]"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
282 case TOPO_TYPE_UINT32_ARRAY: tstr = "uint32[]"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
283 case TOPO_TYPE_INT64_ARRAY: tstr = "int64[]"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
284 case TOPO_TYPE_UINT64_ARRAY: tstr = "uint64[]"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
285 case TOPO_TYPE_STRING_ARRAY: tstr = "string[]"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
286 case TOPO_TYPE_FMRI_ARRAY: tstr = "fmri[]"; break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
287 default: tstr = "unknown type";
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
288 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
289
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
290 (void) printf(" %-17s %-8s ", propn, tstr);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
291
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
292 /*
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
293 * Get property value
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
294 */
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
295 if (nvpair_name(pv_nvp) == NULL ||
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
296 (pv_nvp = nvlist_next_nvpair(nvl, pv_nvp)) == NULL) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
297 (void) fprintf(stderr, "%s: malformed property value\n",
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
298 g_pname);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
299 return;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
300 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
301
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
302 switch (nvpair_type(pv_nvp)) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
303 case DATA_TYPE_INT32: {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
304 int32_t val;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
305 (void) nvpair_value_int32(pv_nvp, &val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
306 (void) printf(" %d", val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
307 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
308 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
309 case DATA_TYPE_UINT32: {
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
310 uint32_t val, type;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
311 char val_str[49];
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
312 nvlist_t *fac, *rsrc = NULL;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
313
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
314 (void) nvpair_value_uint32(pv_nvp, &val);
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
315 if (node == NULL || topo_node_flags(node) !=
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
316 TOPO_NODE_FACILITY)
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
317 goto uint32_def;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
318
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
319 if (topo_node_resource(node, &rsrc, &err) != 0)
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
320 goto uint32_def;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
321
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
322 if (nvlist_lookup_nvlist(rsrc, "facility", &fac) != 0)
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
323 goto uint32_def;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
324
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
325 if (nvlist_lookup_string(fac, FM_FMRI_FACILITY_TYPE,
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
326 &factype) != 0)
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
327 goto uint32_def;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
328
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
329 nvlist_free(rsrc);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
330 rsrc = NULL;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
331
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
332 /*
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
333 * Special case code to do friendlier printing of
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
334 * facility node properties
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
335 */
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
336 if ((strcmp(propn, TOPO_FACILITY_TYPE) == 0) &&
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
337 (strcmp(factype, TOPO_FAC_TYPE_SENSOR) == 0)) {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
338 topo_sensor_type_name(val, val_str, 48);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
339 (void) printf(" 0x%x (%s)", val, val_str);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
340 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
341 } else if ((strcmp(propn, TOPO_FACILITY_TYPE) == 0) &&
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
342 (strcmp(factype, TOPO_FAC_TYPE_INDICATOR) == 0)) {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
343 topo_led_type_name(val, val_str, 48);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
344 (void) printf(" 0x%x (%s)", val, val_str);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
345 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
346 } else if (strcmp(propn, TOPO_SENSOR_UNITS) == 0) {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
347 topo_sensor_units_name(val, val_str, 48);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
348 (void) printf(" 0x%x (%s)", val, val_str);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
349 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
350 } else if (strcmp(propn, TOPO_LED_MODE) == 0) {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
351 topo_led_state_name(val, val_str, 48);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
352 (void) printf(" 0x%x (%s)", val, val_str);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
353 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
354 } else if ((strcmp(propn, TOPO_SENSOR_STATE) == 0) &&
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
355 (strcmp(factype, TOPO_FAC_TYPE_SENSOR) == 0)) {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
356 if (topo_prop_get_uint32(node,
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
357 TOPO_PGROUP_FACILITY, TOPO_FACILITY_TYPE,
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
358 &type, &err) != 0) {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
359 goto uint32_def;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
360 }
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
361 topo_sensor_state_name(type, val, val_str, 48);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
362 (void) printf(" 0x%x (%s)", val, val_str);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
363 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
364 }
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
365 uint32_def:
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
366 (void) printf(" 0x%x", val);
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
367 if (rsrc != NULL)
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
368 nvlist_free(rsrc);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
369 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
370 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
371 case DATA_TYPE_INT64: {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
372 int64_t val;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
373 (void) nvpair_value_int64(pv_nvp, &val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
374 (void) printf(" %lld", (longlong_t)val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
375 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
376 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
377 case DATA_TYPE_UINT64: {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
378 uint64_t val;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
379 (void) nvpair_value_uint64(pv_nvp, &val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
380 (void) printf(" 0x%llx", (u_longlong_t)val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
381 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
382 }
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
383 case DATA_TYPE_DOUBLE: {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
384 double val;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
385 (void) nvpair_value_double(pv_nvp, &val);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
386 (void) printf(" %lf", (double)val);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
387 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
388 }
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
389 case DATA_TYPE_STRING: {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
390 char *val;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
391 (void) nvpair_value_string(pv_nvp, &val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
392 if (!opt_V && strlen(val) > 48) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
393 (void) snprintf(buf, 48, "%s...", val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
394 (void) printf(" %s", buf);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
395 } else {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
396 (void) printf(" %s", val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
397 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
398 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
399 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
400 case DATA_TYPE_NVLIST: {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
401 nvlist_t *val;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
402 char *fmri;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
403 (void) nvpair_value_nvlist(pv_nvp, &val);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
404 if (topo_fmri_nvl2str(thp, val, &fmri, &err) != 0) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
405 if (opt_V)
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
406 nvlist_print(stdout, nvl);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
407 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
408 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
409
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
410 if (!opt_V && strlen(fmri) > 48) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
411 (void) snprintf(buf, 48, "%s", fmri);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
412 (void) snprintf(&buf[45], 4, "%s", DOTS);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
413 (void) printf(" %s", buf);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
414 } else {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
415 (void) printf(" %s", fmri);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
416 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
417
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
418 topo_hdl_strfree(thp, fmri);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
419 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
420 }
10234
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
421 case DATA_TYPE_INT32_ARRAY: {
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
422 int32_t *val;
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
423
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
424 (void) nvpair_value_int32_array(pv_nvp, &val, &nelem);
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
425 (void) printf(" [ ");
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
426 for (i = 0; i < nelem; i++)
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
427 (void) printf("%d ", val[i]);
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
428 (void) printf("]");
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
429 break;
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
430 }
3323
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
431 case DATA_TYPE_UINT32_ARRAY: {
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
432 uint32_t *val;
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
433
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
434 (void) nvpair_value_uint32_array(pv_nvp, &val, &nelem);
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
435 (void) printf(" [ ");
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
436 for (i = 0; i < nelem; i++)
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
437 (void) printf("%u ", val[i]);
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
438 (void) printf("]");
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
439 break;
3cff27a475a5 PSARC 2006/679 Fault Event Extension
cindi
parents: 3062
diff changeset
440 }
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
441 case DATA_TYPE_INT64_ARRAY: {
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
442 int64_t *val;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
443
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
444 (void) nvpair_value_int64_array(pv_nvp, &val, &nelem);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
445 (void) printf(" [ ");
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
446 for (i = 0; i < nelem; i++)
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
447 (void) printf("%lld ", val[i]);
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
448 (void) printf("]");
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
449 break;
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
450 }
10234
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
451 case DATA_TYPE_UINT64_ARRAY: {
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
452 uint64_t *val;
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
453
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
454 (void) nvpair_value_uint64_array(pv_nvp, &val, &nelem);
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
455 (void) printf(" [ ");
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
456 for (i = 0; i < nelem; i++)
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
457 (void) printf("%llu ", val[i]);
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
458 (void) printf("]");
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
459 break;
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
460 }
6640
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
461 case DATA_TYPE_STRING_ARRAY: {
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
462 char **val;
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
463
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
464 (void) nvpair_value_string_array(pv_nvp, &val, &nelem);
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
465 (void) printf(" [ ");
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
466 for (i = 0; i < nelem; i++)
10234
c4cea2ed5803 6839705 libtopo needs updates in order to cope with ILOM 3
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 9501
diff changeset
467 (void) printf("\"%s\" ", val[i]);
6640
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
468 (void) printf("]");
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
469 break;
c92ca9b95b9c PSARC/2007/522 Disk enumeration for Sun Fire X4200 and X4200 M2
cth
parents: 6341
diff changeset
470 }
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
471 default:
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
472 (void) fprintf(stderr, " unknown data type (%d)",
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
473 nvpair_type(pv_nvp));
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
474 break;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
475 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
476 (void) printf("\n");
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
477 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
478
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
479 static void
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
480 print_pgroup(topo_hdl_t *thp, tnode_t *node, const char *pgn, char *dstab,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
481 char *nstab, int32_t version)
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
482 {
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
483 int err;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
484 char buf[30];
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
485 topo_pgroup_info_t *pgi = NULL;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
486
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
487 if (pgn == NULL)
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
488 return;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
489
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
490 if (node != NULL && (dstab == NULL || nstab == NULL || version == -1)) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
491 if ((pgi = topo_pgroup_info(node, pgn, &err)) != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
492 dstab = (char *)topo_stability2name(pgi->tpi_datastab);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
493 nstab = (char *)topo_stability2name(pgi->tpi_namestab);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
494 version = pgi->tpi_version;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
495 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
496 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
497
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
498 if (dstab == NULL || nstab == NULL || version == -1) {
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
499 (void) printf(" group: %-30s version: - stability: -/-\n",
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
500 pgn);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
501 } else if (!opt_V && strlen(pgn) > 30) {
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
502 (void) snprintf(buf, 26, "%s", pgn);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
503 (void) snprintf(&buf[27], 4, "%s", DOTS);
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
504 (void) printf(" group: %-30s version: %-3d stability: %s/%s\n",
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
505 buf, version, nstab, dstab);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
506 } else {
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
507 (void) printf(" group: %-30s version: %-3d stability: %s/%s\n",
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
508 pgn, version, nstab, dstab);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
509 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
510
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
511 if (pgi != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
512 topo_hdl_strfree(thp, (char *)pgi->tpi_name);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
513 topo_hdl_free(thp, pgi, sizeof (topo_pgroup_info_t));
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
514 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
515 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
516
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
517 static void
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
518 print_all_props(topo_hdl_t *thp, tnode_t *node, nvlist_t *p_nv,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
519 const char *group)
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
520 {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
521 char *pgn = NULL, *dstab = NULL, *nstab = NULL;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
522 int32_t version;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
523 nvlist_t *pg_nv, *pv_nv;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
524 nvpair_t *nvp, *pg_nvp;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
525 int pg_done, match, all = strcmp(group, ALL) == 0;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
526
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
527 for (nvp = nvlist_next_nvpair(p_nv, NULL); nvp != NULL;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
528 nvp = nvlist_next_nvpair(p_nv, nvp)) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
529 if (strcmp(TOPO_PROP_GROUP, nvpair_name(nvp)) != 0 ||
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
530 nvpair_type(nvp) != DATA_TYPE_NVLIST)
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
531 continue;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
532
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
533 nstab = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
534 dstab = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
535 version = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
536 pg_done = match = 0;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
537 (void) nvpair_value_nvlist(nvp, &pg_nv);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
538 for (pg_nvp = nvlist_next_nvpair(pg_nv, NULL); pg_nvp != NULL;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
539 pg_nvp = nvlist_next_nvpair(pg_nv, pg_nvp)) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
540 /*
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
541 * Print property group name and stability levels
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
542 */
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
543 if (strcmp(TOPO_PROP_GROUP_NAME, nvpair_name(pg_nvp))
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
544 == 0 && nvpair_type(pg_nvp) == DATA_TYPE_STRING) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
545 (void) nvpair_value_string(pg_nvp, &pgn);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
546 match = strcmp(group, pgn) == 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
547 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
548 }
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
549
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
550 if (strcmp(TOPO_PROP_GROUP_NSTAB,
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
551 nvpair_name(pg_nvp)) == 0 &&
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
552 nvpair_type(pg_nvp) == DATA_TYPE_STRING) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
553 (void) nvpair_value_string(pg_nvp, &nstab);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
554 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
555 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
556
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
557 if (strcmp(TOPO_PROP_GROUP_DSTAB,
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
558 nvpair_name(pg_nvp)) == 0 &&
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
559 nvpair_type(pg_nvp) == DATA_TYPE_STRING) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
560 (void) nvpair_value_string(pg_nvp, &dstab);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
561 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
562 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
563
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
564 if (strcmp(TOPO_PROP_GROUP_VERSION,
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
565 nvpair_name(pg_nvp)) == 0 &&
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
566 nvpair_type(pg_nvp) == DATA_TYPE_INT32) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
567 (void) nvpair_value_int32(pg_nvp, &version);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
568 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
569 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
570
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
571 if ((match || all) && !pg_done) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
572 print_pgroup(thp, node, pgn, dstab, nstab,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
573 version);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
574 pg_done++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
575 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
576
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
577 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
578 * Print property group and property name-value pair
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
579 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
580 if (strcmp(TOPO_PROP_VAL, nvpair_name(pg_nvp))
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
581 == 0 && nvpair_type(pg_nvp) == DATA_TYPE_NVLIST) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
582 (void) nvpair_value_nvlist(pg_nvp, &pv_nv);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
583 if ((match || all) && pg_done) {
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
584 print_prop_nameval(thp, node, pv_nv);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
585 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
586
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
587 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
588
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
589 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
590 if (match && !all)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
591 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
592 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
593 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
594
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
595 static void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
596 set_prop(topo_hdl_t *thp, tnode_t *node, nvlist_t *fmri, struct prop_args *pp)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
597 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
598 int ret, err = 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
599 topo_type_t type;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
600 nvlist_t *nvl, *f = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
601 char *end;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
602
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
603 if (pp->prop == NULL || pp->type == NULL || pp->value == NULL)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
604 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
605
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
606 if ((type = str2type(pp->type)) == TOPO_TYPE_INVALID) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
607 (void) fprintf(stderr, "%s: invalid property type %s for %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
608 g_pname, pp->type, pp->prop);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
609 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
610 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
611
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
612 if (nvlist_alloc(&nvl, NV_UNIQUE_NAME, 0) != 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
613 (void) fprintf(stderr, "%s: nvlist allocation failed for "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
614 "%s=%s:%s\n", g_pname, pp->prop, pp->type, pp->value);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
615 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
616 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
617 ret = nvlist_add_string(nvl, TOPO_PROP_VAL_NAME, pp->prop);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
618 ret |= nvlist_add_uint32(nvl, TOPO_PROP_VAL_TYPE, type);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
619 if (ret != 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
620 (void) fprintf(stderr, "%s: invalid property type %s for %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
621 g_pname, pp->type, pp->prop);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
622 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
623 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
624 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
625
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
626 errno = 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
627 switch (type) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
628 case TOPO_TYPE_INT32:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
629 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
630 int32_t val;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
631
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
632 val = strtol(pp->value, &end, 0);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
633 if (errno == ERANGE) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
634 ret = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
635 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
636 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
637 ret = nvlist_add_int32(nvl, TOPO_PROP_VAL_VAL, val);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
638 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
639 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
640 case TOPO_TYPE_UINT32:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
641 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
642 uint32_t val;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
643
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
644 val = strtoul(pp->value, &end, 0);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
645 if (errno == ERANGE) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
646 ret = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
647 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
648 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
649 ret = nvlist_add_uint32(nvl, TOPO_PROP_VAL_VAL, val);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
650 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
651 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
652 case TOPO_TYPE_INT64:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
653 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
654 int64_t val;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
655
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
656 val = strtoll(pp->value, &end, 0);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
657 if (errno == ERANGE) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
658 ret = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
659 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
660 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
661 ret = nvlist_add_int64(nvl, TOPO_PROP_VAL_VAL, val);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
662 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
663 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
664 case TOPO_TYPE_UINT64:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
665 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
666 uint64_t val;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
667
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
668 val = strtoull(pp->value, &end, 0);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
669 if (errno == ERANGE) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
670 ret = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
671 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
672 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
673 ret = nvlist_add_uint64(nvl, TOPO_PROP_VAL_VAL, val);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
674 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
675 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
676 case TOPO_TYPE_STRING:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
677 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
678 ret = nvlist_add_string(nvl, TOPO_PROP_VAL_VAL,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
679 pp->value);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
680 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
681 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
682 case TOPO_TYPE_FMRI:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
683 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
684 if ((ret = topo_fmri_str2nvl(thp, pp->value, &f, &err))
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
685 < 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
686 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
687
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
688 if ((ret = nvlist_add_nvlist(nvl, TOPO_PROP_VAL_VAL,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
689 f)) != 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
690 err = ETOPO_PROP_NVL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
691 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
692 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
693 default:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
694 ret = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
695 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
696
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
697 if (ret != 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
698 (void) fprintf(stderr, "%s: unable to set property value for "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
699 "%s: %s\n", g_pname, pp->prop, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
700 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
701 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
702 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
703
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
704 if (node != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
705 if (topo_prop_setprop(node, pp->group, nvl, TOPO_PROP_MUTABLE,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
706 f, &ret) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
707 (void) fprintf(stderr, "%s: unable to set property "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
708 "value for " "%s=%s:%s: %s\n", g_pname, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
709 pp->type, pp->value, topo_strerror(ret));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
710 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
711 nvlist_free(f);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
712 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
713 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
714 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
715 if (topo_fmri_setprop(thp, fmri, pp->group, nvl,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
716 TOPO_PROP_MUTABLE, f, &ret) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
717 (void) fprintf(stderr, "%s: unable to set property "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
718 "value for " "%s=%s:%s: %s\n", g_pname, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
719 pp->type, pp->value, topo_strerror(ret));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
720 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
721 nvlist_free(f);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
722 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
723 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
724 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
725
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
726 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
727
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
728 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
729 * Now, get the property back for printing
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
730 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
731 if (node != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
732 if (topo_prop_getprop(node, pp->group, pp->prop, f, &nvl,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
733 &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
734 (void) fprintf(stderr, "%s: failed to get %s.%s: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
735 g_pname, pp->group, pp->prop, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
736 nvlist_free(f);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
737 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
738 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
739 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
740 if (topo_fmri_getprop(thp, fmri, pp->group, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
741 f, &nvl, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
742 (void) fprintf(stderr, "%s: failed to get %s.%s: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
743 g_pname, pp->group, pp->prop, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
744 nvlist_free(f);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
745 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
746 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
747 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
748
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
749 print_pgroup(thp, node, pp->group, NULL, NULL, 0);
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
750 print_prop_nameval(thp, node, nvl);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
751 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
752
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
753 nvlist_free(f);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
754 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
755
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
756 static void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
757 print_props(topo_hdl_t *thp, tnode_t *node)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
758 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
759 int i, err;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
760 nvlist_t *nvl;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
761 struct prop_args *pp;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
762
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
763 if (pcnt == 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
764 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
765
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
766 for (i = 0; i < pcnt; ++i) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
767 pp = pargs[i];
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
768
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
769 if (pp->group == NULL)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
770 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
771
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
772 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
773 * If we have a valid value, this is a request to
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
774 * set a property. Otherwise, just print the property
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
775 * group and any specified properties.
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
776 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
777 if (pp->value == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
778 if (pp->prop == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
779
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
780 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
781 * Print all properties in this group
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
782 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
783 if ((nvl = topo_prop_getprops(node, &err))
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
784 == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
785 (void) fprintf(stderr, "%s: failed to "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
786 "get %s: %s\n", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
787 pp->group,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
788 topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
789 continue;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
790 } else {
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
791 print_all_props(thp, node, nvl,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
792 pp->group);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
793 nvlist_free(nvl);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
794 continue;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
795 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
796 }
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
797 if (topo_prop_getprop(node, pp->group, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
798 NULL, &nvl, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
799 (void) fprintf(stderr, "%s: failed to get "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
800 "%s.%s: %s\n", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
801 pp->group, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
802 topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
803 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
804 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
805 print_pgroup(thp, node, pp->group, NULL,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
806 NULL, 0);
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
807 print_prop_nameval(thp, node, nvl);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
808 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
809 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
810 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
811 set_prop(thp, node, NULL, pp);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
812 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
813 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
814 }
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
815
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
816 /*ARGSUSED*/
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
817 static int
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
818 walk_node(topo_hdl_t *thp, tnode_t *node, void *arg)
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
819 {
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
820 int err;
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
821 nvlist_t *nvl;
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
822 nvlist_t *rsrc, *out;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
823 char *s;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
824
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
825 if (opt_e && strcmp(opt_s, FM_FMRI_SCHEME_HC) == 0) {
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
826 print_everstyle(node);
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
827 return (TOPO_WALK_NEXT);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
828 }
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
829
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
830 if (topo_node_resource(node, &rsrc, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
831 (void) fprintf(stderr, "%s: failed to get resource: "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
832 "%s", g_pname, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
833 return (TOPO_WALK_NEXT);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
834 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
835 if (topo_fmri_nvl2str(thp, rsrc, &s, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
836 (void) fprintf(stderr, "%s: failed to convert "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
837 "resource to FMRI string: %s", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
838 topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
839 nvlist_free(rsrc);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
840 return (TOPO_WALK_NEXT);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
841 }
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
842
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
843 if (g_fmri != NULL && fnmatch(g_fmri, s, 0) != 0) {
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
844 nvlist_free(rsrc);
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
845 topo_hdl_strfree(thp, s);
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
846 return (TOPO_WALK_NEXT);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
847 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
848
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
849 print_node(thp, node, rsrc, s);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
850 topo_hdl_strfree(thp, s);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
851 nvlist_free(rsrc);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
852
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
853 if (opt_m != NULL) {
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
854 if (topo_method_invoke(node, opt_m, 0, NULL, &out, &err) == 0) {
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
855 nvlist_print(stdout, out);
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
856 nvlist_free(out);
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
857 } else if (err != ETOPO_METHOD_NOTSUP)
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
858 (void) fprintf(stderr, "%s: method failed unexpectedly "
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
859 "on %s=%d (%s)\n", g_pname, topo_node_name(node),
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
860 topo_node_instance(node), topo_strerror(err));
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
861 }
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
862
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
863 if (opt_V || opt_all) {
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
864 if ((nvl = topo_prop_getprops(node, &err)) == NULL) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
865 (void) fprintf(stderr, "%s: failed to get "
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
866 "properties for %s=%d: %s\n", g_pname,
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
867 topo_node_name(node), topo_node_instance(node),
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
868 topo_strerror(err));
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
869 } else {
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
870 print_all_props(thp, node, nvl, ALL);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
871 nvlist_free(nvl);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
872 }
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
873 } else if (pcnt > 0)
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
874 print_props(thp, node);
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
875
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
876 (void) printf("\n");
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
877
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
878 return (TOPO_WALK_NEXT);
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
879 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
880
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
881 static void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
882 get_pargs(int argc, char *argv[])
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
883 {
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
884 struct prop_args *pp;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
885 char c, *s, *p;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
886 int i = 0;
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
887
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
888 if ((pargs = malloc(sizeof (struct prop_args *) * pcnt)) == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
889 (void) fprintf(stderr, "%s: failed to allocate property "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
890 "arguments\n", g_pname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
891 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
892 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
893
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
894 for (optind = 1; (c = getopt(argc, argv, optstr)) != EOF; ) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
895 if (c == 'P') {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
896
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
897 if (strcmp(optarg, ALL) == 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
898 opt_all++;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
899 break;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
900 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
901
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
902 if ((pp = pargs[i] = malloc(sizeof (struct prop_args)))
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
903 == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
904 (void) fprintf(stderr, "%s: failed to "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
905 "allocate propertyarguments\n", g_pname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
906 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
907 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
908 ++i;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
909 pp->group = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
910 pp->prop = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
911 pp->type = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
912 pp->value = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
913
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
914 p = optarg;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
915 if ((s = strchr(p, '.')) != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
916 *s++ = '\0'; /* strike out delimiter */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
917 pp->group = p;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
918 p = s;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
919 if ((s = strchr(p, '=')) != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
920 *s++ = '\0'; /* strike out delimiter */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
921 pp->prop = p;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
922 p = s;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
923 if ((s = strchr(p, ':')) != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
924 *s++ = '\0';
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
925 pp->type = p;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
926 pp->value = s;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
927 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
928 (void) fprintf(stderr, "%s: "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
929 "property type not "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
930 "specified for assignment "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
931 " of %s.%s\n", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
932 pp->group, pp->prop);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
933 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
934 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
935 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
936 pp->prop = p;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
937 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
938 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
939 pp->group = p;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
940 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
941 if (i >= pcnt)
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
942 break;
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
943 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
944 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
945
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
946 if (opt_all > 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
947 int j;
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
948
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
949 for (j = 0; j < i; ++j)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
950 free(pargs[i]);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
951 free(pargs);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
952 pargs = NULL;
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
953 }
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
954 }
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
955
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
956 static int
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
957 walk_topo(topo_hdl_t *thp, char *uuid)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
958 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
959 int err;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
960 topo_walk_t *twp;
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
961 int flag;
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
962
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
963 if (getzoneid() != GLOBAL_ZONEID &&
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
964 strcmp(opt_s, FM_FMRI_SCHEME_HC) == 0) {
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
965 return (0);
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
966 }
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
967
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
968 if ((twp = topo_walk_init(thp, opt_s, walk_node, NULL, &err))
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
969 == NULL) {
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
970 (void) fprintf(stderr, "%s: failed to walk %s topology:"
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
971 " %s\n", g_pname, opt_s, topo_strerror(err));
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
972
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
973 return (-1);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
974 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
975
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
976 /*
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
977 * Print standard header
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
978 */
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
979 if (!opt_e) {
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
980 char buf[32];
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
981 time_t tod = time(NULL);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
982
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
983 (void) printf("TIME UUID\n");
3062
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
984 (void) strftime(buf, sizeof (buf), "%b %d %T", localtime(&tod));
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
985 (void) printf("%-15s %-32s\n", buf, uuid);
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
986 (void) printf("\n");
46d280f5351d 6396916 verification of dtd file name is wrong
cindi
parents: 2027
diff changeset
987 }
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
988
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
989 flag = opt_b != 0 ? TOPO_WALK_SIBLING : TOPO_WALK_CHILD;
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
990
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
991 if (topo_walk_step(twp, flag) == TOPO_WALK_ERR) {
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
992 (void) fprintf(stderr, "%s: failed to walk topology\n",
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
993 g_pname);
2027
7f714f201d97 PSARC 2006/221 /dev/bmc interface upgrade
sethg
parents: 1414
diff changeset
994 topo_walk_fini(twp);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
995 return (-1);
1414
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
996 }
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
997
b4126407ac5b PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
cindi
parents: 0
diff changeset
998 topo_walk_fini(twp);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
999
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1000 return (0);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1001 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1002
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1003 static void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1004 print_fmri_pgroup(topo_hdl_t *thp, const char *pgn, nvlist_t *nvl)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1005 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1006 char *dstab = NULL, *nstab = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1007 int32_t version = -1;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1008 nvlist_t *pnvl;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1009 nvpair_t *pnvp;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1010
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1011 (void) nvlist_lookup_string(nvl, TOPO_PROP_GROUP_NSTAB, &nstab);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1012 (void) nvlist_lookup_string(nvl, TOPO_PROP_GROUP_DSTAB, &dstab);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1013 (void) nvlist_lookup_int32(nvl, TOPO_PROP_GROUP_VERSION, &version);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1014
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1015 print_pgroup(thp, NULL, pgn, dstab, nstab, version);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1016
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1017 for (pnvp = nvlist_next_nvpair(nvl, NULL); pnvp != NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1018 pnvp = nvlist_next_nvpair(nvl, pnvp)) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1019
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1020 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1021 * Print property group and property name-value pair
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1022 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1023 if (strcmp(TOPO_PROP_VAL, nvpair_name(pnvp))
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1024 == 0 && nvpair_type(pnvp) == DATA_TYPE_NVLIST) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1025 (void) nvpair_value_nvlist(pnvp, &pnvl);
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
1026 print_prop_nameval(thp, NULL, pnvl);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1027
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1028 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1029
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1030 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1031 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1032
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1033 static void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1034 print_fmri_props(topo_hdl_t *thp, nvlist_t *nvl)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1035 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1036 int i, err;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1037 struct prop_args *pp;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1038 nvlist_t *pnvl;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1039
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1040 for (i = 0; i < pcnt; ++i) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1041 pp = pargs[i];
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1042
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1043 if (pp->group == NULL)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1044 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1045
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1046 pnvl = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1047
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1048 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1049 * If we have a valid value, this is a request to
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1050 * set a property. Otherwise, just print the property
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1051 * group and any specified properties.
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1052 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1053 if (pp->value == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1054 if (pp->prop == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1055
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1056 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1057 * Print all properties in this group
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1058 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1059 if (topo_fmri_getpgrp(thp, nvl, pp->group,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1060 &pnvl, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1061 (void) fprintf(stderr, "%s: failed to "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1062 "get group %s: %s\n", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1063 pp->group, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1064 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1065 } else {
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
1066 print_fmri_pgroup(thp, pp->group,
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
1067 pnvl);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1068 nvlist_free(pnvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1069 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1070 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1071 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1072 if (topo_fmri_getprop(thp, nvl, pp->group, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1073 NULL, &pnvl, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1074 (void) fprintf(stderr, "%s: failed to get "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1075 "%s.%s: %s\n", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1076 pp->group, pp->prop,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1077 topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1078 continue;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1079 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1080 print_fmri_pgroup(thp, pp->group, pnvl);
7243
2f11e164daec PSARC 2008/428 Extending libnvpair for type double
robj
parents: 6640
diff changeset
1081 print_prop_nameval(thp, NULL, pnvl);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1082 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1083 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1084 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1085 set_prop(thp, NULL, nvl, pp);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1086 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1087 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1088 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1089
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1090 void
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1091 print_fmri(topo_hdl_t *thp, char *uuid)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1092 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1093 int ret, err;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1094 nvlist_t *nvl;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1095 char buf[32];
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1096 time_t tod = time(NULL);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1097
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1098 if (topo_fmri_str2nvl(thp, g_fmri, &nvl, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1099 (void) fprintf(stderr, "%s: failed to convert %s to nvlist: "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1100 "%s\n", g_pname, g_fmri, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1101 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1102 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1103
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
1104 (void) printf("TIME UUID\n");
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1105 (void) strftime(buf, sizeof (buf), "%b %d %T", localtime(&tod));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1106 (void) printf("%-15s %-32s\n", buf, uuid);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1107 (void) printf("\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1108
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1109 (void) printf("%s\n", (char *)g_fmri);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1110
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1111 if (opt_p && !(pcnt > 0 || opt_V || opt_all)) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1112 char *aname = NULL, *fname = NULL, *lname = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1113 nvlist_t *asru = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1114 nvlist_t *fru = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1115
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1116 if (topo_fmri_asru(thp, nvl, &asru, &err) == 0)
4328
fe6ac87d8e60 6547176 libtopo leaks memory on failure
cindi
parents: 4087
diff changeset
1117 (void) topo_fmri_nvl2str(thp, asru, &aname, &err);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1118 if (topo_fmri_fru(thp, nvl, &fru, &err) == 0)
4328
fe6ac87d8e60 6547176 libtopo leaks memory on failure
cindi
parents: 4087
diff changeset
1119 (void) topo_fmri_nvl2str(thp, fru, &fname, &err);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1120 (void) topo_fmri_label(thp, nvl, &lname, &err);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1121
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1122 nvlist_free(fru);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1123 nvlist_free(asru);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1124
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1125 if (aname != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1126 (void) printf("\tASRU: %s\n", aname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1127 topo_hdl_strfree(thp, aname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1128 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1129 (void) printf("\tASRU: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1130 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1131 if (fname != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1132 (void) printf("\tFRU: %s\n", fname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1133 topo_hdl_strfree(thp, fname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1134 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1135 (void) printf("\tFRU: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1136 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1137 if (lname != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1138 (void) printf("\tLabel: %s\n", lname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1139 topo_hdl_strfree(thp, lname);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1140 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1141 (void) printf("\tLabel: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1142 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1143 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1144
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1145 if (opt_S) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1146 if (topo_fmri_str2nvl(thp, g_fmri, &nvl, &err) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1147 (void) printf("\tPresent: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1148 (void) printf("\tUnusable: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1149 return;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1150 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1151
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1152 if ((ret = topo_fmri_present(thp, nvl, &err)) < 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1153 (void) printf("\tPresent: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1154 else
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1155 (void) printf("\tPresent: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1156 ret ? "true" : "false");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1157
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1158 if ((ret = topo_fmri_unusable(thp, nvl, &err)) < 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1159 (void) printf("\tUnusable: -\n");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1160 else
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1161 (void) printf("\tUnusable: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1162 ret ? "true" : "false");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1163
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1164 nvlist_free(nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1165 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1166
5068
06d88145c7f7 6492246 x64 cpu/mem topology/diagnosis should include FRU labels
robj
parents: 4328
diff changeset
1167 if (pargs && pcnt > 0)
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1168 print_fmri_props(thp, nvl);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1169 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1170
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1171 int
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1172 fmtopo_exit(topo_hdl_t *thp, char *uuid, int err)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1173 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1174 if (uuid != NULL)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1175 topo_hdl_strfree(thp, uuid);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1176
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1177 if (thp != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1178 topo_snap_release(thp);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1179 topo_close(thp);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1180 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1181
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1182 if (pargs) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1183 int i;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1184 for (i = 0; i < pcnt; ++i)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1185 free(pargs[i]);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1186 free(pargs);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1187 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1188
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1189 return (err);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1190 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1191
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1192 int
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1193 main(int argc, char *argv[])
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1194 {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1195 topo_hdl_t *thp = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1196 char *uuid = NULL;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1197 int c, err = 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1198
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1199 g_pname = argv[0];
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1200
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1201 while (optind < argc) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1202 while ((c = getopt(argc, argv, optstr)) != -1) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1203 switch (c) {
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1204 case 'b':
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1205 opt_b++;
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1206 break;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1207 case 'C':
11050
be69f645ce17 6894028 Some fm libraries are not lint clean
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 10234
diff changeset
1208 (void) atexit(abort);
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1209 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1210 case 'd':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1211 opt_d++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1212 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1213 case 'e':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1214 opt_e++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1215 break;
9501
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
1216 case 'm':
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
1217 opt_m = optarg;
f84d3cc28d24 PSARC 2009/265 fmdump -m
Robert Johnston <Robert.Johnston@Sun.COM>
parents: 7585
diff changeset
1218 break;
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1219 case 'P':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1220 pcnt++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1221 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1222 case 'p':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1223 opt_p++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1224 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1225 case 'V':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1226 opt_V++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1227 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1228 case 'R':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1229 opt_R = optarg;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1230 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1231 case 's':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1232 opt_s = optarg;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1233 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1234 case 'S':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1235 opt_S++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1236 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1237 case 't':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1238 opt_t++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1239 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1240 case 'x':
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1241 opt_x++;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1242 break;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1243 default:
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1244 return (usage(stderr));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1245 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1246 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1247
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1248 if (optind < argc) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1249 if (g_fmri != NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1250 (void) fprintf(stderr, "%s: illegal argument "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1251 "-- %s\n", g_pname, argv[optind]);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1252 return (FMTOPO_EXIT_USAGE);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1253 } else {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1254 g_fmri = argv[optind++];
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1255 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1256 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1257 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1258
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1259 if (pcnt > 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1260 get_pargs(argc, argv);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1261
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1262 if ((thp = topo_open(TOPO_VERSION, opt_R, &err)) == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1263 (void) fprintf(stderr, "%s: failed to open topology tree: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1264 g_pname, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1265 return (fmtopo_exit(thp, uuid, FMTOPO_EXIT_ERROR));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1266 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1267
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1268 if (opt_d)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1269 topo_debug_set(thp, "module", "stderr");
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1270
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1271 if ((uuid = topo_snap_hold(thp, NULL, &err)) == NULL) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1272 (void) fprintf(stderr, "%s: failed to snapshot topology: %s\n",
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1273 g_pname, topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1274 return (fmtopo_exit(thp, uuid, FMTOPO_EXIT_ERROR));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1275 } else if (err != 0) {
12979
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
1276 (void) fprintf(stderr, "%s: topology snapshot incomplete%s\n",
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
1277 g_pname, getzoneid() != GLOBAL_ZONEID &&
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
1278 strcmp(opt_s, FM_FMRI_SCHEME_HC) == 0 ?
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
1279 " (" FM_FMRI_SCHEME_HC " scheme does not enumerate "
ab9ae749152f PSARC/2009/617 Software Events Notification Parameters CLI
Gavin Maltby <gavin.maltby@oracle.com>
parents: 11050
diff changeset
1280 "in a non-global zone)": "");
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1281 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1282
6341
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1283 if (opt_x) {
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1284 if (opt_b) {
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1285 (void) fprintf(stderr,
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1286 "%s: -b and -x cannot be specified together\n",
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1287 g_pname);
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1288 return (fmtopo_exit(thp, uuid, FMTOPO_EXIT_USAGE));
c39d9b323d46 6644917 TOPO_WALK_SIBLING isn't really breadth-first, confusing hc_walker()
cy152378
parents: 5068
diff changeset
1289 }
4087
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1290
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1291 err = 0;
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1292 if (topo_xml_print(thp, stdout, opt_s, &err) < 0)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1293 (void) fprintf(stderr, "%s: failed to print xml "
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1294 "formatted topology:%s", g_pname,
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1295 topo_strerror(err));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1296
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1297 return (fmtopo_exit(thp, uuid, err ? FMTOPO_EXIT_ERROR :
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1298 FMTOPO_EXIT_SUCCESS));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1299 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1300
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1301 if (opt_t || walk_topo(thp, uuid) < 0) {
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1302 if (g_fmri != NULL)
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1303 /*
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1304 * Try getting some useful information
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1305 */
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1306 print_fmri(thp, uuid);
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1307
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1308 return (fmtopo_exit(thp, uuid, FMTOPO_EXIT_ERROR));
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1309 }
b986877655d2 6521594 fmtopo '[-Cdev]' usage doesn't make sense
cindi
parents: 3323
diff changeset
1310
4328
fe6ac87d8e60 6547176 libtopo leaks memory on failure
cindi
parents: 4087
diff changeset
1311 return (fmtopo_exit(thp, uuid, FMTOPO_EXIT_SUCCESS));
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
1312 }