2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. 2N/A /* If there is no Stability defined, we default to private */ 2N/A /* no conversion was done */ 2N/A "%s: unrecognized type attribute value '%s'\n",
2N/A "%s: no <propitem> or <argitem> elements found " 2N/A * This is a workaround for xml integer arrays not 2N/A * Try interpreting it as a string. 2N/A "%s: failed to interpret as a string\n",
2N/A "%s: interpreting array as a string, " 2N/A * See how many elements we have by parsing 2N/A * a duplicate string. 2N/A "%s: no elements found, str=%s\n",
2N/A "%s: no <propitem> or <argitem> elements found " 2N/A "%s: no <propitem> elements found for array prop",
2N/A "%s: unrecognized type attribute (ptype = %d)\n",
2N/A /* Parse the string and fill in the array. */ 2N/A /* Sanity check that we parsed the same number. */ 2N/A "%s: i=%d != nelems=%d\n",
2N/A "%s: dependents missing grouping attribute",
__func__);
2N/A "%s: dependents have bogus grouping attribute",
__func__);
2N/A /* Add processed dependents to the tail of the list */ 2N/A "%s: error within dependent .xml topology: %s\n",
2N/A "%s: prop value lookup failed: pgrp=%s, prop=%s\n",
2N/A * Some properties may have already been set 2N/A * in topo_node_bind() or topo_prop_inherit if we are 2N/A * enumerating from a static .xml file 2N/A "%s: pad lookup (%s) failed\n",
2N/A "%s: pgroups create failure: %s\n",
2N/A * The number of properties could be zero if the property 2N/A * group only contains propmethod declarations 2N/A "%s: recorded number of props %d does not " 2N/A "match number of props recorded %d\n",
2N/A /* FMXXX stability of the property name */ 2N/A "propmethod %s for property \"%s\" in propgrp %s on node " 2N/A * Get propmethod attribute values 2N/A "%s: propmethod element lacks a name attribute\n",
2N/A "%s: propmethod element lacks version attribute\n",
2N/A * The "mutable" and "nonvoltile" attributes are optional. If not 2N/A * specified we default to false (0) 2N/A "%s: propmethod element lacks propname attribute\n",
2N/A * Allocate method argument nvlist 2N/A * Iterate through the argval nodes and build the argval nvlist 2N/A "%s: argval element lacks a name " 2N/A * Register the prop method for all of the nodes in our range 2N/A * If the propgroup element is under a range element, we'll apply 2N/A * the method to all of the topo nodes at this level with the same 2N/A * Otherwise, if the propgroup element is under a node element 2N/A * then we'll simply register the method for this node. 2N/A "%s: failed to allocate propgroup nvlist\n",
__func__);
2N/A "%s: failed to allocate nvlist array for " 2N/A * psn: pointer to a "set" XML node 2N/A * key: string to search the set for 2N/A * returns: 1, if the set contains key 2N/A * Process the property group and dependents xmlNode children of 2N/A * parent xmlNode pxn. 2N/A "%s: cn->name is %s \n",
2N/A * We're iterating through the XML children looking for 2N/A * four types of elements: 2N/A * 1) dependents elements 2N/A * 2) unconstrained pgroup elements 2N/A * 3) pgroup elements constrained by set elements 2N/A * 4) enum-method elements for the case that we want 2N/A * to post-process a statically defined node 2N/A * If it's the default set then we'll store 2N/A * a pointer to it so that if none of the other 2N/A * sets apply to our product we can fall 2N/A * If we haven't found a set that contains our product AND 2N/A * a default set exists, then we'll process it. 2N/A "%s: dcnt=%d, pgcnt=%d, ecnt=%d, joined_set=%d\n",
2N/A * If an enum-method element was found, AND we're a child of a 2N/A * node element, then we invoke the enumerator so that it can do 2N/A * post-processing of the node. 2N/A * Note the failure but continue on 2N/A * Here we allocate an element in an intermediate data structure 2N/A * which keeps track property groups and dependents of the range 2N/A * currently being processed. 2N/A * This structure is referenced in pgroups_record() to create 2N/A * the actual property groups in the topo tree 2N/A * If the property groups are contained within a set 2N/A * then they will be one level lower in the XML tree. 2N/A * If there is no "node" element under the "range" 2N/A * element, then we need to attach the facility node to 2N/A * each node in this range. 2N/A * Otherwise we only attach it to the current node 2N/A "%s: invalid provider specified: %s\n",
2N/A * Invoke enum entry point in fac provider which will cause the 2N/A * facility enumeration node method to be registered. 2N/A "%s: invalid provider attr value: %s\n",
2N/A "%s: pgroups create failure: %s\n",
2N/A * Invoke enum entry point in fac_prov_ipmi module, which will 2N/A * cause the provider methods to be registered on this node 2N/A "%s: enum entry point failed for provider %s!\n",
2N/A * We must call this for "Static" nodes as well since 2N/A * xml snapshots have everything defined as such. 2N/A * If this is a static node declaration, we can 2N/A * ignore the lookup failure and continue 2N/A * processing. Otherwise, something 2N/A * went wrong during enumeration 2N/A * Check for recursive enumeration 2N/A "%s: recursive enumeration detected for %s\n",
__func__,
2N/A * Check if the enumerator module is already loaded. 2N/A * Module loading is single-threaded at this point so there's 2N/A * no need to worry about the module going away or bumping the 2N/A * We're live, so let's enumerate. 2N/A * Check if the enumerator module is already loaded. 2N/A * Module loading is single-threaded at this point so there's 2N/A * no need to worry about the module going away or bumping the 2N/A * We're live, so let's enumerate. 2N/A "%s: acility provider enumeration failed (%s)\n",
__func__,
2N/A /* Only care about instances within the range */ 2N/A * The range may have several children xmlNodes, that may 2N/A * represent the enumeration method, property groups, 2N/A * dependents, nodes or services. 2N/A * Before we process any of the other child xmlNodes, we iterate through 2N/A * the children and looking for either enum-method or propmap elements. 2N/A * If we found an enum-method element, process it first 2N/A * Note the failure but continue on 2N/A * Next, check if a propmap element was found and if so, load it in 2N/A "%s: propmap element missing name attribute\n",
2N/A "%s: topo_file_load failed: %s\n",
2N/A /* Now look for nodes, i.e., hard instances */ 2N/A "%s: node processing failed: %s\n",
2N/A * Finally, process the property groups and dependents 2N/A * If the TF_PROPMAP flag is set for the XML file we're currently 2N/A * processing, then this XML file was loaded via propmap. In that case 2N/A * we call a special routine to recursively apply the propgroup settings 2N/A * to all of nodes in this range 2N/A /* Only care about instances within the range */ 2N/A * First iterate through all the XML nodes at this level to look for 2N/A * If it's the default set then we'll store 2N/A * a pointer to it so that if none of the other 2N/A * sets apply to our product we can fall 2N/A * If we haven't found a set that contains our product AND a default set 2N/A * exists, then we'll process it. 2N/A * Now we're interested in children xmlNodes of croot tagged 2N/A * as 'ranges'. These define what topology nodes may exist, and need 2N/A * Range processing error, continue walk 2N/A "%s: range processing error, errmsg=%s\n",
2N/A * Convert parsed xml topology description into topology nodes 2N/A * Parse the high level authority information placing it into the 2N/A /* alloc authority nvlist */ 2N/A /* fill in authority nvlist */ 2N/A "%s: %s mfg(%s) name(%s) part(%s) serial(%s)\n",
__func__,
2N/A /* set auth nvl to topo handle */ 2N/A * Load an XML tree from filename and read it into a DOM parse tree. 2N/A "%s: tmp=0x%p, thp=0x%p, filenm=%s, escheme=%s, " 2N/A * Since topologies can XInclude other topologies, and libxml2 2N/A * doesn't do DTD-based validation with XInclude, by default 2N/A * we don't validate topology files. One can force 2N/A * validation, though, by creating a TOPOXML_VALIDATE 2N/A * environment variable and creating a TOPO_DTD environment 2N/A * variable with the path to the DTD against which to validate. 2N/A * Splat warnings and errors related to parsing the topology 2N/A * file if the TOPOXML_PERROR environment variable exists. 2N/A * Verify that this is a document type we understand. 2N/A "%s: document DTD unknown; bad topology file\n",
__func__);
2N/A * Make sure we're looking at a topology description in the 2N/A "%s: document is not a topology description\n",
__func__);
2N/A "%s: topology in unrecognized scheme, %s, expecting %s\n",
2N/A * If we're loading a snapshot file, 2N/A * then we expect a UUID and timestamp to be present. 2N/A "%s: topology snapshot is missing a UUID\n",
2N/A "%s: topology snapshot is missing a timestamp\n",
2N/A "%s: could not parse DTD \"%s\"\n",
2N/A "%s: couldn't handle XInclude statements in "