1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Copyright 2006 Sun Microsystems, Inc. All rights reserved. 4 Use is subject to license terms. 5 6 CDDL HEADER START 7 8 The contents of this file are subject to the terms of the 9 Common Development and Distribution License (the "License"). 10 You may not use this file except in compliance with the License. 11 12 You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 13 or http://www.opensolaris.org/os/licensing. 14 See the License for the specific language governing permissions 15 and limitations under the License. 16 17 When distributing Covered Code, include this CDDL HEADER in each 18 file and include the License file at usr/src/OPENSOLARIS.LICENSE. 19 If applicable, add the following below this CDDL HEADER, with the 20 fields enclosed by brackets "[]" replaced with your own identifying 21 information: Portions Copyright [yyyy] [name of copyright owner] 22 23 CDDL HEADER END 24 25 ident "%Z%%M% %I% %E% SMI" 26--> 27 28<!-- 29 Service description DTD 30 31 Most attributes are string values (or an individual string from a 32 restricted set), but attributes with a specific type requirement are 33 noted in the comment describing the element. 34--> 35 36<!-- 37 XInclude support 38 39 A series of service bundles may be composed via the xi:include tag. 40 smf(5) tools enforce that all bundles be of the same type. 41--> 42<!ELEMENT xi:include 43 (xi:fallback) 44 > 45<!ATTLIST xi:include 46 href CDATA #REQUIRED 47 parse (xml|text) "xml" 48 encoding CDATA #IMPLIED 49 xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" 50 > 51 52<!ELEMENT xi:fallback 53 ANY 54 > 55<!ATTLIST xi:fallback 56 xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude" 57 > 58 59<!-- 60 stability 61 62 This element associates an SMI stability level with the parent 63 element. See attributes(5) for an explanation of interface 64 stability levels. 65 66 Its attribute is 67 68 value The stability level of the parent element. 69--> 70 71<!ELEMENT stability EMPTY> 72 73<!ATTLIST stability 74 value ( Standard | Stable | Evolving | Unstable | 75 External | Obsolete ) #REQUIRED > 76 77<!-- Property value lists --> 78 79<!-- 80 value_node 81 82 This element represents a single value within any of the typed 83 property value lists. 84 85 Its attribute is 86 87 value The value for this node in the list. 88--> 89 90<!ELEMENT value_node EMPTY> 91 92<!ATTLIST value_node 93 value CDATA #REQUIRED> 94 95<!-- 96 count_list 97 integer_list 98 opaque_list 99 host_list 100 hostname_list 101 net_address_v4_list 102 net_address_v6_list 103 time_list 104 astring_list 105 ustring_list 106 boolean_list 107 fmri_list 108 uri_list 109 110 These elements represent the typed lists of values for a property. 111 Each contains one or more value_node elements representing each 112 value on the list. 113 114 None of these elements has attributes. 115--> 116 117<!ELEMENT count_list 118 ( value_node+ )> 119 120<!ATTLIST count_list> 121 122<!ELEMENT integer_list 123 ( value_node+ )> 124 125<!ATTLIST integer_list> 126 127<!ELEMENT opaque_list 128 ( value_node+ )> 129 130<!ATTLIST opaque_list> 131 132<!ELEMENT host_list 133 ( value_node+ )> 134 135<!ATTLIST host_list> 136 137<!ELEMENT hostname_list 138 ( value_node+ )> 139 140<!ATTLIST hostname_list> 141 142<!ELEMENT net_address_v4_list 143 ( value_node+ )> 144 145<!ATTLIST net_address_v4_list> 146 147<!ELEMENT net_address_v6_list 148 ( value_node+ )> 149 150<!ATTLIST net_address_v6_list> 151 152<!ELEMENT time_list 153 ( value_node+ )> 154 155<!ATTLIST time_list> 156 157<!ELEMENT astring_list 158 ( value_node+ )> 159 160<!ATTLIST astring_list> 161 162<!ELEMENT ustring_list 163 ( value_node+ )> 164 165<!ATTLIST ustring_list> 166 167<!ELEMENT boolean_list 168 ( value_node+ )> 169 170<!ATTLIST boolean_list> 171 172<!ELEMENT fmri_list 173 ( value_node+ )> 174 175<!ATTLIST fmri_list> 176 177<!ELEMENT uri_list 178 ( value_node+ )> 179 180<!ATTLIST uri_list> 181 182<!-- Properties and property groups --> 183 184<!-- 185 property 186 187 This element is for a singly or multiply valued property within a 188 property group. It contains an appropriate value list element, 189 which is expected to be consistent with the type attribute. 190 191 Its attributes are 192 193 name The name of this property. 194 195 type The data type for this property. 196 197 override These values should replace values already in the 198 repository. 199--> 200 201<!ELEMENT property 202 ( count_list | integer_list | opaque_list | host_list | hostname_list | 203 net_address_v4_list | net_address_v6_list | time_list | 204 astring_list | ustring_list | boolean_list | fmri_list | 205 uri_list )? > 206 207<!ATTLIST property 208 name CDATA #REQUIRED 209 type ( count | integer | opaque | host | hostname | 210 net_address_v4 | net_address_v6 | time | 211 astring | ustring | boolean | fmri | uri ) #REQUIRED 212 override ( true | false ) "false" > 213 214<!-- 215 propval 216 217 This element is for a singly valued property within a property 218 group. List-valued properties must use the property element above. 219 220 Its attributes are 221 222 name The name of this property. 223 224 type The data type for this property. 225 226 value The value for this property. Must match type 227 restriction of type attribute. 228 229 override This value should replace any values already in the 230 repository. 231--> 232 233<!ELEMENT propval EMPTY> 234 235<!ATTLIST propval 236 name CDATA #REQUIRED 237 type ( count | integer | opaque | host | hostname | 238 net_address_v4 | net_address_v6 | time | astring | 239 ustring | boolean | fmri | uri ) #REQUIRED 240 value CDATA #REQUIRED 241 override ( true | false ) "false" > 242 243<!-- 244 property_group 245 246 This element is for a set of related properties on a service or 247 instance. It contains an optional stability element, as well as 248 zero or more property-containing elements. 249 250 Its attributes are 251 252 name The name of this property group. 253 254 type A category for this property group. Groups of type 255 "framework", "implementation" or "template" are primarily 256 of interest to the service management facility, while 257 groups of type "application" are expected to be only of 258 interest to the service to which this group is attached. 259 Other types may be introduced using the service symbol 260 namespace conventions. 261 262 delete If in the repository, this property group should be removed. 263--> 264 265<!ELEMENT property_group 266 ( stability?, ( propval | property )* )> 267 268<!ATTLIST property_group 269 name CDATA #REQUIRED 270 type CDATA #REQUIRED 271 delete ( true | false ) "false" > 272 273<!-- 274 service_fmri 275 276 This element defines a reference to a service FMRI (for either a 277 service or an instance). 278 279 Its attribute is 280 281 value The FMRI. 282--> 283 284<!ELEMENT service_fmri EMPTY> 285 286<!ATTLIST service_fmri 287 value CDATA #REQUIRED> 288 289<!-- Dependencies --> 290 291<!-- 292 dependency 293 294 This element identifies a group of FMRIs upon which the service is 295 in some sense dependent. Its interpretation is left to the 296 restarter to which a particular service instance is delegated. It 297 contains a group of service FMRIs, as well as a block of properties. 298 299 Its attributes are 300 301 name The name of this dependency. 302 303 grouping The relationship between the various FMRIs grouped 304 here; "require_all" of the FMRIs to be online, "require_any" 305 of the FMRIs to be online, or "exclude_all" of the FMRIs 306 from being online for the dependency to be satisfied. 307 "optional_all" dependencies are satisfied when all 308 of the FMRIs are either online or unable to come 309 online (because they are disabled, misconfigured, or one 310 of their dependencies is unable to come online). 311 312 restart_on The type of events from the FMRIs that the service should 313 be restarted for. "error" restarts the service if the 314 dependency is restarted due to hardware fault. "restart" 315 restarts the service if the dependency is restarted for 316 any reason, including hardware fault. "refresh" restarts 317 the service if the dependency is refreshed or restarted for 318 any reason. "none" will never restart the service due to 319 dependency state changes. 320 321 type The type of dependency: on another service ('service'), on 322 a filesystem path ('path'), or another dependency type. 323 324 delete This dependency should be deleted. 325--> 326 327<!ELEMENT dependency 328 ( service_fmri*, stability?, ( propval | property )* ) > 329 330<!ATTLIST dependency 331 name CDATA #REQUIRED 332 grouping ( require_all | require_any | exclude_all | 333 optional_all ) #REQUIRED 334 restart_on ( error | restart | refresh | none ) #REQUIRED 335 type CDATA #REQUIRED 336 delete ( true | false ) "false" > 337 338<!-- Dependents --> 339 340<!-- 341 dependent 342 343 This element identifies a service which should depend on this service. It 344 corresponds to a dependency in the named service. The grouping and type 345 attributes of that dependency are implied to be "require_all" and 346 "service", respectively. 347 348 Its attributes are 349 350 name The name of the dependency property group to create in the 351 dependent entity. 352 353 grouping The grouping relationship of the dependency property 354 group to create in the dependent entity. See "grouping" 355 attribute on the dependency element. 356 357 restart_on The type of events from this service that the named service 358 should be restarted for. 359 360 delete True if this dependent should be deleted. 361 362 override Whether to replace an existing dependent of the same name. 363 364--> 365 366<!ELEMENT dependent 367 ( service_fmri, stability?, ( propval | property )* ) > 368 369<!ATTLIST dependent 370 name CDATA #REQUIRED 371 grouping ( require_all | require_any | exclude_all | 372 optional_all) #REQUIRED 373 restart_on ( error | restart | refresh | none) #REQUIRED 374 delete ( true | false ) "false" 375 override ( true | false ) "false" > 376 377<!-- Method execution context, security profile, and credential definitions --> 378 379<!-- 380 envvar 381 382 An environment variable. It has two attributes: 383 384 name The name of the environment variable. 385 value The value of the environment variable. 386--> 387 388<!ELEMENT envvar EMPTY> 389 390<!ATTLIST envvar 391 name CDATA #REQUIRED 392 value CDATA #REQUIRED > 393 394<!-- 395 method_environment 396 397 This element defines the environment for a method. It has no 398 attributes, and one or more envvar child elements. 399--> 400 401<!ELEMENT method_environment (envvar+) > 402 403<!ATTLIST method_environment> 404 405<!-- 406 method_profile 407 408 This element indicates which exec_attr(5) profile applies to the 409 method context being defined. 410 411 Its attribute is 412 413 name The name of the profile. 414--> 415 416<!ELEMENT method_profile EMPTY> 417 418<!ATTLIST method_profile 419 name CDATA #REQUIRED > 420 421<!-- 422 method_credential 423 424 This element specifies credential attributes for the execution 425 method to use. 426 427 Its attributes are 428 429 user The user ID, in numeric or text form. 430 431 group The group ID, in numeric or text form. If absent or 432 ":default", the group associated with the user in the 433 passwd database. 434 435 supp_groups Supplementary group IDs to be associated with the 436 method, separated by commas or spaces. If absent or 437 ":default", initgroups(3C) will be used. 438 439 privileges An optional string specifying the privilege set. 440 441 limit_privileges An optional string specifying the limit 442 privilege set. 443--> 444 445<!ELEMENT method_credential EMPTY> 446 447<!ATTLIST method_credential 448 user CDATA #REQUIRED 449 group CDATA ":default" 450 supp_groups CDATA ":default" 451 privileges CDATA ":default" 452 limit_privileges CDATA ":default" > 453 454<!-- 455 method_context 456 457 This element combines credential and resource management attributes 458 for execution methods. It may contain a method_environment, or 459 a method_profile or method_credential element. 460 461 Its attributes are 462 463 working_directory The home directory to launch the method from. 464 ":default" can be used as a token to indicate use of the 465 user specified by the credential or profile specified. 466 467 project The project ID, in numeric or text form. ":default" can 468 be used as a token to indicate use of the project 469 identified by getdefaultproj(3PROJECT) for the non-root 470 user specified by the credential or profile specified. 471 If the user is root, ":default" designates the project 472 the restarter is running in. 473 474 resource_pool The resource pool name to launch the method on. 475 ":default" can be used as a token to indicate use of the 476 pool specified in the project(4) entry given in the 477 "project" attribute above. 478--> 479<!ELEMENT method_context 480 ( (method_profile | method_credential)?, method_environment? ) > 481 482<!ATTLIST method_context 483 working_directory CDATA ":default" 484 project CDATA ":default" 485 resource_pool CDATA ":default" > 486 487<!-- Restarter delegation, methods, and monitors --> 488 489<!-- 490 exec_method 491 492 This element describes one of the methods used by the designated 493 restarter to act on the service instance. Its interpretation is 494 left to the restarter to which a particular service instance is 495 delegated. It contains a set of attributes, an optional method 496 context, and an optional stability element for the optional 497 properties that can be included. 498 499 Its attributes are 500 501 type The type of method, either "method" or "monitor". 502 503 name Name of this execution method. The method names are 504 usually a defined interface of the restarter to which an 505 instance of this service is delegated. 506 507 exec The string identifying the action to take. For 508 svc.startd(1M), this is a string suitable to pass to 509 exec(2). 510 511 timeout_seconds [integer] Duration, in seconds, to wait for this 512 method to complete. A '0' or '-1' denotes an infinite 513 timeout. 514 515 delete If in the repository, the property group for this method 516 should be removed. 517--> 518 519<!ELEMENT exec_method 520 ( method_context?, stability?, ( propval | property )* ) > 521 522<!ATTLIST exec_method 523 type ( method | monitor ) #REQUIRED 524 name CDATA #REQUIRED 525 exec CDATA #REQUIRED 526 timeout_seconds CDATA #REQUIRED 527 delete ( true | false ) "false" > 528 529<!-- 530 restarter 531 532 A flag element identifying the restarter to which this service or 533 service instance is delegated. Contains the FMRI naming the 534 delegated restarter. 535 536 This element has no attributes. 537--> 538 539<!ELEMENT restarter 540 ( service_fmri ) > 541 542<!ATTLIST restarter> 543 544<!-- 545 Templates 546--> 547 548<!-- 549 doc_link 550 551 The doc_link relates a resource described by the given URI to the 552 service described by the containing template. The resource is 553 expected to be a documentation or elucidatory reference of some 554 kind. 555 556 Its attributes are 557 558 name A label for this resource. 559 560 uri A URI to the resource. 561--> 562 563<!ELEMENT doc_link EMPTY> 564 565<!ATTLIST doc_link 566 name CDATA #REQUIRED 567 uri CDATA #REQUIRED > 568 569<!-- 570 manpage 571 572 The manpage element connects the reference manual page to the 573 template's service. 574 575 Its attributes are 576 577 title The manual page title. 578 579 section The manual page's section. 580 581 manpath The MANPATH environment variable, as described in man(1) 582 that is required to reach the named manual page 583--> 584 585<!ELEMENT manpage EMPTY> 586 587<!ATTLIST manpage 588 title CDATA #REQUIRED 589 section CDATA #REQUIRED 590 manpath CDATA ":default" > 591 592<!-- 593 documentation 594 595 The documentation element groups an arbitrary number of doc_link 596 and manpage references. 597 598 It has no attributes. 599--> 600 601<!ELEMENT documentation 602 ( doc_link | manpage )* > 603 604<!ATTLIST documentation> 605 606<!-- 607 loctext 608 609 The loctext element is a container for localized text. 610 611 Its sole attribute is 612 613 xml:lang The name of the locale, in the form accepted by LC_ALL, 614 etc. See locale(5). 615--> 616<!ELEMENT loctext 617 (#PCDATA) > 618 619<!ATTLIST loctext 620 xml:lang CDATA #REQUIRED > 621 622<!-- 623 description 624 625 The description holds a set of potentially longer, localized strings that 626 consist of a short description of the service. 627 628 The description has no attributes. 629--> 630<!ELEMENT description 631 ( loctext+ ) > 632 633<!ATTLIST description> 634 635<!-- 636 common_name 637 638 The common_name holds a set of short, localized strings that 639 represent a well-known name for the service in the given locale. 640 641 The common_name has no attributes. 642--> 643<!ELEMENT common_name 644 ( loctext+ ) > 645 646<!ATTLIST common_name> 647 648<!-- 649 template 650 651 The template contains a collection of metadata about the service. 652 It contains a localizable string that serves as a common, 653 human-readable name for the service. (This name should be less than 654 60 characters in a single byte locale.) The template may optionally 655 contain a longer localizable description of the service, a 656 collection of links to documentation, either in the form of manual 657 pages or in the form of URI specifications to external documentation 658 sources (such as docs.sun.com). 659 660 The template has no attributes. 661--> 662<!ELEMENT template 663 ( common_name, description?, documentation?) > 664 665<!ATTLIST template> 666 667<!-- Services and instances --> 668 669<!-- 670 create_default_instance 671 672 A flag element indicating that an otherwise empty default instance 673 of this service (named "default") should be created at install, with 674 its enabled property set as given. 675 676 Its attribute is 677 678 enabled [boolean] The initial value for the enabled state of 679 this instance. 680--> 681 682<!ELEMENT create_default_instance EMPTY > 683 684<!ATTLIST create_default_instance 685 enabled ( true | false ) #REQUIRED > 686 687<!-- 688 single_instance 689 690 A flag element stating that this service can only have a single 691 instance on a particular system. 692--> 693 694<!ELEMENT single_instance EMPTY> 695 696<!ATTLIST single_instance> 697 698<!-- 699 instance 700 701 The service instance is the object representing a software component 702 that will run on the system if enabled. It contains an enabled 703 element, a set of dependencies on other services, potentially 704 customized methods or configuration data, an optional method 705 context, and a pointer to its restarter. (If no restarter is 706 specified, the master restarter, svc.startd(1M), is assumed to be 707 responsible for the service.) 708 709 Its attributes are 710 711 name The canonical name for this instance of the service. 712 713 enabled [boolean] The initial value for the enabled state of 714 this instance. 715--> 716 717<!ELEMENT instance 718 ( restarter?, dependency*, dependent*, method_context?, 719 exec_method*, property_group*, template? ) > 720 721<!ATTLIST instance 722 name CDATA #REQUIRED 723 enabled ( true | false ) #REQUIRED > 724 725<!-- 726 service 727 728 The service contains the set of instances defined by default for 729 this service, an optional method execution context, any default 730 methods, the template, and various restrictions or advice applicable 731 at installation. The method execution context and template elements 732 are required for service_bundle documents with type "manifest", but 733 are optional for "profile" or "archive" documents. 734 735 Its attributes are 736 737 name The canonical name for the service. 738 739 version [integer] The integer version for this service. 740 741 type Whether this service is a simple service, a delegated 742 restarter, or a milestone (a synthetic service that 743 collects a group of dependencies). 744--> 745 746<!ELEMENT service 747 ( create_default_instance?, single_instance?, restarter?, 748 dependency*, dependent*, method_context?, exec_method*, 749 property_group*, instance*, stability?, template? ) > 750 751<!ATTLIST service 752 name CDATA #REQUIRED 753 version CDATA #REQUIRED 754 type ( service | restarter | milestone ) #REQUIRED > 755 756<!-- 757 service_bundle 758 759 The bundle possesses two attributes: 760 761 type How this file is to be understood by the framework (or 762 used in a non-framework compliant way). Standard types 763 are 'archive', 'manifest', and 'profile'. 764 765 name A name for the bundle. Manifests should be named after 766 the package which delivered them; profiles should be 767 named after the "feature set nickname" they intend to 768 enable. 769--> 770 771<!ELEMENT service_bundle 772 ( service_bundle* | service* | xi:include* )> 773 774<!ATTLIST service_bundle 775 type CDATA #REQUIRED 776 name CDATA #REQUIRED> 777