1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Copyright 2009 Sun Microsystems, Inc. All rights reserved. 4 Use is subject to license terms. 5 6 Copyright (c) 2018, Joyent, Inc. 7 8 CDDL HEADER START 9 10 The contents of this file are subject to the terms of the 11 Common Development and Distribution License (the "License"). 12 You may not use this file except in compliance with the License. 13 14 You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 15 or http://www.opensolaris.org/os/licensing. 16 See the License for the specific language governing permissions 17 and limitations under the License. 18 19 When distributing Covered Code, include this CDDL HEADER in each 20 file and include the License file at usr/src/OPENSOLARIS.LICENSE. 21 If applicable, add the following below this CDDL HEADER, with the 22 fields enclosed by brackets "[]" replaced with your own identifying 23 information: Portions Copyright [yyyy] [name of copyright owner] 24 25 CDDL HEADER END 26 27--> 28 29<!-- 30 Topology description DTD 31 32 Most attributes are string values (or an individual string from a 33 restricted set), but attributes with a specific type requirement are 34 noted in the comment describing the element. 35--> 36 37<!-- 38 XInclude support 39 40 Topologies may be composed via the xi:include tag. 41 libtopo interfaces enforce that all composed topologies be of the 42 same scheme. 43--> 44 45<!ELEMENT xi:include 46 (xi:fallback) > 47 48<!ATTLIST xi:include 49 href CDATA #REQUIRED 50 parse (xml|text) "xml" 51 encoding CDATA #IMPLIED 52 xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" 53 > 54 55<!ELEMENT xi:fallback 56 ANY 57 > 58<!ATTLIST xi:fallback 59 xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" 60 > 61 62<!-- Properties and property groups --> 63 64<!-- 65 propval 66 67 This element is for a singly valued property within a property group. 68 69 Its attributes are 70 71 name The name of this property. 72 73 type The data type for this property. 74 75 value The value for this property. Must match type 76 restriction of type attribute. 77 78 This is optional for array types 79 80--> 81 82<!ELEMENT propval (propitem*) > 83 84<!ATTLIST propval 85 name CDATA #REQUIRED 86 type ( int32 | uint32 | int64 | uint64 | 87 string | fmri | int32_array | uint32_array | 88 int64_array | uint64_array | string_array | 89 fmri_array ) #REQUIRED 90 value CDATA "" > 91<!-- 92 propitem 93 94 This element is an optional child element of propval and is used to 95 specify the values for array elements 96 97 Its attributes are 98 99 value The value for this property. Must match type 100 restriction of type attribute. 101 102--> 103 104<!ELEMENT propitem EMPTY > 105 106<!ATTLIST propitem 107 value CDATA #REQUIRED > 108 109 110<!-- 111 propgroup 112 113 This element is for a set of related properties on a topo node 114 It contains an optional stability element, as well as 115 zero or more property-containing elements. 116 117 Its attributes are 118 119 name The name of this property group. 120 name-stability Stability level of the property group name 121 data-stability Stability level of the property names and 122 content 123 version Version of the propery group definition 124 125--> 126 127<!ELEMENT propgroup 128 ( propval*, propmethod* ) > 129 130<!ATTLIST propgroup 131 name CDATA #REQUIRED 132 version CDATA #REQUIRED 133 name-stability ( Private | Standard | Stable | Evolving | Unstable | 134 External | Obsolete ) #REQUIRED 135 data-stability ( Private | Standard | Stable | Evolving | Unstable | 136 External | Obsolete ) #REQUIRED > 137 138<!-- 139 set 140 This element is for associating ranges, nodes or property groups 141 according to a set type. 142 143 Its attributes are 144 145 type The type of this property group set. 'product' is the 146 only set type currently supported. 147 setlist The list of set types. 148 149--> 150 151<!ELEMENT set 152 ( range*, fac-enum?, propgroup*, facility*, set* ) > 153 154<!ATTLIST set 155 type ( product ) #REQUIRED 156 setlist CDATA #REQUIRED > 157 158<!-- 159 propmap 160 This element is for specifying an additional topo map file for 161 properties assigned to a given range. 162 163 Its attributes are 164 165 name Name of map file 166--> 167 168<!ELEMENT propmap EMPTY > 169 170<!ATTLIST propmap 171 name CDATA #REQUIRED > 172 173<!-- Methods --> 174 175<!-- 176 argval 177 178 A propmethod argument. It has two attributes: 179 180 name The name of the argument. 181 type The data type of the argument. 182 value The value for this argument. Must match type 183 restriction of type attribute. 184 185 This attribute is optional for array types 186--> 187 188<!ELEMENT argval (argitem*) > 189 190<!ATTLIST argval 191 name CDATA #REQUIRED 192 type ( int32 | uint32 | int64 | uint64 | 193 string | fmri | int32_array | uint32_array | 194 int64_array | uint64_array | string_array | 195 fmri_array ) #REQUIRED 196 value CDATA ""> 197 198<!-- 199 argitem 200 201 This element is an optional child element of argval and is used to 202 specify the values for array elements 203 204 Its attributes are 205 206 value The value for this property. Must match type 207 restriction of type attribute. 208 209--> 210 211<!ELEMENT argitem EMPTY > 212 213<!ATTLIST argitem 214 value CDATA #REQUIRED > 215 216 217<!-- 218 propmethod 219 220 This element is for properties that can only be determined dynamically 221 from a plugin. 222 223 Its attributes are 224 225 name Name of the method 226 version Version of the method API 227 propname Name of the property to create 228 proptype Type of the property to create 229 mutable optional: default is false (0) 230 nonvolatile optional: default is false (0) 231--> 232 233<!ELEMENT propmethod 234 ( argval* ) > 235 236<!ATTLIST propmethod 237 name CDATA #REQUIRED 238 version CDATA #REQUIRED 239 propname CDATA #REQUIRED 240 proptype CDATA #REQUIRED 241 mutable (0|1) "0" 242 nonvolatile (0|1) "0" > 243 244<!-- 245 enum-method 246 247 This element describes the enumeration method used to 248 populate a composition of topo nodes for a given range of topology 249 nodes. 250 251 Its attributes are 252 253 name Name of the module exporting an enumeration method. 254 255 version Version of the libtopo API 256 257--> 258 259<!ELEMENT enum-method EMPTY > 260 261<!ATTLIST enum-method 262 name CDATA #REQUIRED 263 version CDATA #REQUIRED > 264 265<!-- 266 node 267 268 This element identifies a topology node instance. 269 270 Its attributes are 271 272 instance The instance number of the node 273 274 static When false, the node will be passed to the 275 corresponding enumeration method. Otherwise, property 276 groups and facilities will be added to a node if it was 277 previously enumerated. Setting this property cannot 278 cause the node to be created. It still must be 279 enumerated. 280--> 281 282<!ELEMENT node 283 ( fac-enum?, facility*, propgroup*, set*, enum-method*, dependents? ) > 284 285<!ATTLIST node 286 instance CDATA #REQUIRED 287 static (false|true) "false" > 288 289<!-- 290 dependents 291 292 Ranges may have a number of "dependent" ranges, linked to 293 the original range hierarchically as children or as a list, siblings. 294 295 Its attribute is: 296 grouping children | siblings 297--> 298 299<!ELEMENT dependents 300 (( range | xi:include )*, set*) > 301 302<!ATTLIST dependents 303 grouping ( children | siblings ) #REQUIRED > 304 305<!-- 306 range 307 308 This element identifies a range of possible topology nodes. 309 310 Its attributes are 311 312 name The common name of all the possible topo nodes 313 314 min The smallest allowed instance number for an 315 actual topo node. 316 317 max The largest allowed instance number for an 318 actual topo node. 319--> 320 321<!ELEMENT range 322 ( enum-method?, propmap?, fac-enum?, facility*, node*, propgroup*, set*, 323 dependents* ) > 324 325<!ATTLIST range 326 name CDATA #REQUIRED 327 min CDATA #REQUIRED 328 max CDATA #REQUIRED > 329 330<!-- 331 facility 332 333 This element identifies a single facility node instance 334 335 Its attributes are 336 337 name The name of the facility node 338 339 type The type of facility node: either "sensor" or "indicator" 340 341 provider The name of the facility provider module that 342 implements the methods for this node or range 343--> 344 345<!ELEMENT facility 346 ( propgroup* ) > 347 348<!ATTLIST facility 349 name CDATA #REQUIRED 350 type (sensor | indicator) #REQUIRED 351 provider CDATA #REQUIRED > 352 353<!-- 354 fac-enum 355 356 This element identifies a facility provider module that 357 implements a facility enumeration method for the enclosing 358 node or range. 359 360 Its attributes are 361 362 provider The name of the facility provider module that 363 implements the facility enumerator method for 364 the parent node or range 365--> 366 367<!ELEMENT fac-enum EMPTY > 368 369<!ATTLIST fac-enum provider CDATA #REQUIRED > 370 371<!-- 372 topology 373 374 This is the root-level for the scheme-specific topology 375 376 Its attributes are: 377 name topology name 378 scheme (hc|dev) 379--> 380 381<!ELEMENT topology 382 ((range* | xi:include*), set*)> 383 384<!ATTLIST topology 385 name CDATA #REQUIRED 386 scheme (hc | dev) #REQUIRED > 387