1 ()                                                                          ()
   2 
   3 
   4 
   5 <?xml version="1.0" encoding="UTF-8"?> <!--
   6  Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
   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   Service description DTD
  29 
  30     Most attributes are string values (or an individual string from a
  31     restricted set), but attributes with a specific type requirement are
  32     noted in the comment describing the element.  -->
  33 
  34 <!--
  35   XInclude support
  36 
  37     A series of service bundles may be composed via the xi:include tag.
  38     smf(5) tools enforce that all bundles be of the same type.  -->
  39 
  40 <!--
  41      These entities are used for the property, propval and property_group
  42      elements, that require type attributes for manifest, while for profiles
  43      the type attributes are only implied.  -->
  44 
  45 <!ENTITY % profile "IGNORE"> <!ENTITY %        manifest "INCLUDE">
  46 
  47 <!ELEMENT xi:include
  48   (xi:fallback)
  49   > <!ATTLIST xi:include
  50   href CDATA #REQUIRED
  51   parse (xml|text) "xml"
  52   encoding CDATA #IMPLIED
  53   xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
  54   >
  55 
  56 <!ELEMENT xi:fallback
  57   ANY
  58   > <!ATTLIST xi:fallback
  59   xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
  60   >
  61 
  62 <!--
  63   stability
  64 
  65     This element associates an SMI stability level with the parent
  66     element.  See attributes(5) for an explanation of interface
  67     stability levels.
  68 
  69     Its attribute is
  70 
  71      value     The stability level of the parent element.  -->
  72 
  73 <!ELEMENT stability EMPTY>
  74 
  75 <!ATTLIST stability   value          ( Standard | Stable | Evolving |
  76 Unstable |               External | Obsolete ) #REQUIRED >
  77 
  78 <!-- Property value lists -->
  79 
  80 <!--
  81   value_node
  82 
  83     This element represents a single value within any of the typed
  84     property value lists.
  85 
  86     Its attribute is
  87 
  88      value     The value for this node in the list.  -->
  89 
  90 <!ELEMENT value_node EMPTY>
  91 
  92 <!ATTLIST value_node  value CDATA #REQUIRED>
  93 
  94 <!--
  95   count_list
  96   integer_list
  97   opaque_list
  98   host_list
  99   hostname_list
 100   net_address_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 <!ELEMENT count_list  ( value_node+ )>
 117 
 118 <!ATTLIST count_list>
 119 
 120 <!ELEMENT integer_list        ( value_node+ )>
 121 
 122 <!ATTLIST integer_list>
 123 
 124 <!ELEMENT opaque_list         ( value_node+ )>
 125 
 126 <!ATTLIST opaque_list>
 127 
 128 <!ELEMENT host_list   ( value_node+ )>
 129 
 130 <!ATTLIST host_list>
 131 
 132 <!ELEMENT hostname_list       ( value_node+ )>
 133 
 134 <!ATTLIST hostname_list>
 135 
 136 <!ELEMENT net_address_list    (      value_node+ )>
 137 
 138 <!ATTLIST net_address_list>
 139 
 140 <!ELEMENT net_address_v4_list           ( value_node+ )>
 141 
 142 <!ATTLIST net_address_v4_list>
 143 
 144 <!ELEMENT net_address_v6_list           ( value_node+ )>
 145 
 146 <!ATTLIST net_address_v6_list>
 147 
 148 <!ELEMENT time_list   ( value_node+ )>
 149 
 150 <!ATTLIST time_list>
 151 
 152 <!ELEMENT astring_list        ( value_node+ )>
 153 
 154 <!ATTLIST astring_list>
 155 
 156 <!ELEMENT ustring_list        ( value_node+ )>
 157 
 158 <!ATTLIST ustring_list>
 159 
 160 <!ELEMENT boolean_list        ( value_node+ )>
 161 
 162 <!ATTLIST boolean_list>
 163 
 164 <!ELEMENT fmri_list   ( value_node+ )>
 165 
 166 <!ATTLIST fmri_list>
 167 
 168 <!ELEMENT uri_list  ( value_node+ )>
 169 
 170 <!ATTLIST uri_list>
 171 
 172 <!-- Properties      and property groups -->
 173 
 174 <!--
 175    property
 176 
 177      This element is for a singly or multiply valued property within a
 178      property group.  It contains an appropriate value list element,
 179      which is expected to be consistent with the type attribute.
 180 
 181      Its attributes are
 182 
 183      name The name of this property.
 184 
 185      type The data type for this property.
 186 
 187      override These values should replace values already in the
 188           repository.  -->
 189 
 190 <![%profile;[ <!ELEMENT   property   ( count_list | integer_list | opaque_list |
 191 host_list | hostname_list |   net_address_list | net_address_v4_list |
 192 net_address_v6_list |    time_list | astring_list | ustring_list |
 193 boolean_list | fmri_list |    uri_list )? >
 194 
 195 <!ATTLIST property  name      CDATA #REQUIRED          type      ( count | integer
 196 | opaque | host | hostname |            net_address | net_address_v4 |
 197 net_address_v6 | time |            astring | ustring | boolean | fmri | uri )
 198 #IMPLIED  override  ( true | false ) "false" > ]]>        <![%manifest;[
 199 <!ELEMENT property  ( count_list | integer_list      | opaque_list | host_list |
 200 hostname_list |     net_address_list | net_address_v4_list |
 201 net_address_v6_list |    time_list | astring_list | ustring_list |
 202 boolean_list | fmri_list |    uri_list )? >
 203 
 204 <!ATTLIST property  name      CDATA #REQUIRED          type      ( count | integer
 205 | opaque | host | hostname |            net_address | net_address_v4 |
 206 net_address_v6 | time |            astring | ustring | boolean | fmri | uri )
 207 #REQUIRED      override  ( true | false ) "false" > ]]>
 208 
 209 <!--
 210    propval
 211 
 212      This element is for a singly valued property within a property
 213      group.  List-valued properties must use the property element above.
 214 
 215      Its attributes are
 216 
 217      name The name of this property.
 218 
 219      type The data type for this property.
 220 
 221      value     The value for this property.  Must match type
 222           restriction of type attribute.
 223 
 224      override This value should replace any values already in the
 225           repository.  -->
 226 
 227 <![%profile;[ <!ELEMENT   propval EMPTY>
 228 
 229 <!ATTLIST propval   name      CDATA #REQUIRED          type      ( count | integer
 230 | opaque | host | hostname |            net_address | net_address_v4 |
 231 net_address_v6 | time |            astring | ustring | boolean | fmri | uri )
 232 #IMPLIED  value          CDATA #REQUIRED     override  ( true | false )
 233 "false" > ]]>
 234 
 235 <![%manifest;[ <!ELEMENT propval EMPTY>
 236 
 237 <!ATTLIST propval   name      CDATA #REQUIRED          type      ( count | integer
 238 | opaque | host | hostname |            net_address | net_address_v4 |
 239 net_address_v6 | time |            astring | ustring | boolean | fmri | uri )
 240 #REQUIRED      value          CDATA #REQUIRED     override  ( true | false )
 241 "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        of interest
 256 to the service management facility, while         groups of type "application"
 257 are expected to be only of         interest to the service to which this group
 258 is attached.        Other types may be introduced using the service symbol
 259           namespace conventions.
 260 
 261      delete    If in the repository, this property group should be removed.
 262 -->
 263 
 264 <![%profile;[ <!ELEMENT   property_group  ( stability?, ( propval | property )*
 265 )>
 266 
 267 <!ATTLIST property_group      name   CDATA #REQUIRED     type      CDATA
 268 #IMPLIED  delete         ( true | false ) "false" > ]]>
 269 
 270 <![%manifest;[ <!ELEMENT property_group        ( stability?, ( propval |
 271 property )* )>
 272 
 273 <!ATTLIST property_group      name   CDATA #REQUIRED     type      CDATA
 274 #REQUIRED      delete         ( true | false ) "false" > ]]>
 275 
 276 <!--
 277   service_fmri
 278 
 279     This element defines a reference to a service FMRI (for either a
 280     service or an instance).
 281 
 282     Its attribute is
 283 
 284      value     The FMRI.  -->
 285 
 286 <!ELEMENT service_fmri EMPTY>
 287 
 288 <!ATTLIST service_fmri        value          CDATA #REQUIRED>
 289 
 290 <!-- Dependencies -->
 291 
 292 <!--
 293   dependency
 294 
 295     This element identifies a group of FMRIs upon which the service is
 296     in some sense dependent.  Its interpretation is left to the
 297     restarter to which a particular service instance is delegated.  It
 298     contains a group of service FMRIs, as well as a block of properties.
 299 
 300     Its attributes are
 301 
 302      name The name of this dependency.
 303 
 304      grouping The relationship between the various FMRIs grouped
 305           here; "require_all" of the FMRIs to be online, "require_any"          of the
 306 FMRIs to be online, or "exclude_all" of the FMRIs           from being online
 307 or in maintenance for the dependency to           be satisfied.
 308 "optional_all" dependencies are satisfied         when all of the FMRIs are
 309 either online or unable to come         online (because they are disabled,
 310 misconfigured, or one         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           dependency is
 314 restarted due to hardware fault.  "restart"       restarts the service if the
 315 dependency is restarted for        any reason, including hardware fault.
 316 "refresh" restarts       the service if the dependency is refreshed or
 317 restarted for       any reason.  "none" will never restart the service due to
 318           dependency state changes.
 319 
 320      type The type of dependency: on another service ('service'), on       a
 321 filesystem path ('path'), or another dependency type.
 322 
 323      delete    This dependency should be deleted.  -->
 324 
 325 <!ELEMENT dependency  ( service_fmri*, stability?, ( propval | property )*
 326 ) >
 327 
 328 <!ATTLIST dependency  name      CDATA #REQUIRED     grouping  ( require_all
 329 | require_any | exclude_all |                optional_all ) #REQUIRED
 330      restart_on     ( error | restart | refresh | none ) #REQUIRED    type
 331           CDATA #REQUIRED     delete         ( true | false ) "false" >
 332 
 333 <!-- Dependents      -->
 334 
 335 <!--
 336   dependent
 337 
 338     This element identifies a service which should depend on this service.  It
 339     corresponds to a dependency in the named service.  The grouping and type
 340     attributes of that dependency are implied to be "require_all" and
 341     "service", respectively.
 342 
 343     Its attributes are
 344 
 345      name The name of the dependency property group to create in the
 346           dependent entity.
 347 
 348      grouping The grouping relationship of the dependency property
 349           group to create in the dependent entity.  See "grouping"         attribute on
 350 the dependency element.
 351 
 352      restart_on The type of events from this service that the named service
 353           should be restarted for.
 354 
 355      delete    True if this dependent should be deleted.
 356 
 357      override Whether to replace an existing dependent of the same name.
 358 
 359 -->
 360 
 361 <!ELEMENT dependent   ( service_fmri, stability?, ( propval | property )* )
 362 >
 363 
 364 <!ATTLIST dependent   name      CDATA #REQUIRED     grouping  ( require_all
 365 | require_any | exclude_all |                optional_all) #REQUIRED
 366      restart_on     ( error | restart | refresh | none) #REQUIRED     delete
 367           ( true | false ) "false"      override  ( true | false ) "false" >
 368 
 369 <!-- Method execution context, security      profile, and credential definitions
 370 -->
 371 
 372 <!--
 373   envvar
 374 
 375     An environment variable. It has two attributes:
 376 
 377      name The name of the environment variable.   value     The value of the
 378 environment variable.  -->
 379 
 380 <!ELEMENT envvar EMPTY>
 381 
 382 <!ATTLIST envvar    name      CDATA #REQUIRED          value          CDATA
 383 #REQUIRED >
 384 
 385 <!--
 386   method_environment
 387 
 388     This element defines the environment for a method. It has no
 389     attributes, and one or more envvar child elements.  -->
 390 
 391 <!ELEMENT method_environment (envvar+) >
 392 
 393 <!ATTLIST method_environment>
 394 
 395 <!--
 396   method_profile
 397 
 398     This element indicates which exec_attr(5) profile applies to the
 399     method context being defined.
 400 
 401     Its attribute is
 402 
 403      name The name of the profile.  -->
 404 
 405 <!ELEMENT method_profile EMPTY>
 406 
 407 <!ATTLIST method_profile      name   CDATA #REQUIRED >
 408 
 409 <!--
 410   method_credential
 411 
 412     This element specifies credential attributes for the execution
 413     method to use.
 414 
 415     Its attributes are
 416 
 417      user The user ID, in numeric or text form.
 418 
 419      group     The group ID, in numeric or text form.  If absent or
 420           ":default", the group associated with the user in the       passwd database.
 421 
 422      supp_groups Supplementary group IDs to be associated with the
 423           method, separated by commas or spaces.  If absent or        ":default",
 424 initgroups(3C) will be used.
 425 
 426      privileges An optional string specifying the privilege set.
 427 
 428      limit_privileges An optional string specifying the limit
 429           privilege set.  -->
 430 
 431 <!ELEMENT method_credential EMPTY>
 432 
 433 <!ATTLIST method_credential   user   CDATA #REQUIRED     group
 434           CDATA #IMPLIED      supp_groups    CDATA #IMPLIED      privileges     CDATA
 435 #IMPLIED  limit_privileges CDATA #IMPLIED >
 436 
 437 <!--
 438   method_context
 439 
 440     This element combines credential and resource management attributes
 441     for execution methods.  It may contain a method_environment, or
 442     a method_profile or method_credential element.
 443 
 444     Its attributes are
 445 
 446      working_directory The home directory to launch the method from.
 447           ":default" can be used as a token to indicate use of the         user
 448 specified by the credential or profile specified.
 449 
 450      project   The project ID, in numeric or text form.  ":default" can
 451           be used as a token to indicate use of the project           identified by
 452 getdefaultproj(3PROJECT) for the non-root         user specified by the
 453 credential or profile specified.        If the user is root, ":default"
 454 designates the project        the restarter is running in.
 455 
 456      resource_pool The resource pool name to launch the method on.
 457           ":default" can be used as a token to indicate use of the         pool
 458 specified in the project(4) entry given in the         "project" attribute
 459 above.  --> <!ELEMENT method_context      ( (method_profile |
 460 method_credential)?, method_environment? ) >
 461 
 462 <!ATTLIST method_context      security_flags   CDATA #IMPLIED
 463      working_directory   CDATA #IMPLIED      project             CDATA #IMPLIED
 464      resource_pool       CDATA #IMPLIED >
 465 
 466 <!-- Restarter delegation, methods, and      monitors -->
 467 
 468 <!--
 469   exec_method
 470 
 471     This element describes one of the methods used by the designated
 472     restarter to act on the service instance.  Its interpretation is
 473     left to the restarter to which a particular service instance is
 474     delegated.  It contains a set of attributes, an optional method
 475     context, and an optional stability element for the optional
 476     properties that can be included.
 477 
 478     Its attributes are
 479 
 480      type The type of method, either "method" or "monitor".
 481 
 482      name Name of this execution method.  The method names are        usually
 483 a defined interface of the restarter to which an       instance of this
 484 service is delegated.
 485 
 486      exec The string identifying the action to take.  For
 487           svc.startd(1M), this is a string suitable to pass to        exec(2).
 488 
 489      timeout_seconds [integer] Duration, in seconds, to wait for this
 490           method to complete.  A '0' or '-1' denotes an infinite           timeout.
 491 
 492      delete    If in the repository, the property group for this method
 493           should be removed.  -->
 494 
 495 <!ELEMENT exec_method         ( method_context?, stability?, ( propval | property
 496 )* ) >
 497 
 498 <!ATTLIST exec_method         type      ( method | monitor ) #REQUIRED     name
 499           CDATA #REQUIRED     exec      CDATA #REQUIRED     timeout_seconds     CDATA
 500 #REQUIRED      delete         ( true | false ) "false" >
 501 
 502 <!--
 503   restarter
 504 
 505     A flag element identifying the restarter to which this service or
 506     service instance is delegated.  Contains the FMRI naming the
 507     delegated restarter.
 508 
 509     This element has no attributes.  -->
 510 
 511 <!ELEMENT restarter   ( service_fmri ) >
 512 
 513 <!ATTLIST restarter>
 514 
 515 <!--
 516   Templates -->
 517 
 518 <!--
 519   doc_link
 520 
 521     The doc_link relates a resource described by the given URI to the
 522     service described by the containing template.  The resource is
 523     expected to be a documentation or elucidatory reference of some
 524     kind.
 525 
 526     Its attributes are
 527 
 528       name      A label for this resource.
 529 
 530       uri       A URI to the resource.  -->
 531 
 532 <!ELEMENT doc_link EMPTY>
 533 
 534 <!ATTLIST doc_link  name      CDATA #REQUIRED          uri       CDATA #REQUIRED >
 535 
 536 <!--
 537   manpage
 538 
 539     The manpage element connects the reference manual page to the
 540     template's service.
 541 
 542     Its attributes are
 543 
 544       title     The manual page title.
 545 
 546       section   The manual page's section.
 547 
 548       manpath   The MANPATH environment variable, as described in man(1)
 549                 that is required to reach the named manual page -->
 550 
 551 <!ELEMENT manpage EMPTY>
 552 
 553 <!ATTLIST manpage   title       CDATA #REQUIRED     section        CDATA
 554 #REQUIRED      manpath        CDATA ":default" >
 555 
 556 <!--
 557   documentation
 558 
 559     The documentation element groups an arbitrary number of doc_link
 560     and manpage references.
 561 
 562     It has no attributes.  -->
 563 
 564 <!ELEMENT documentation       ( doc_link | manpage )* >
 565 
 566 <!ATTLIST documentation>
 567 
 568 <!--
 569   loctext
 570 
 571     The loctext element is a container for localized text.
 572 
 573     Its sole attribute is
 574 
 575      xml:lang The name of the locale, in the form accepted by LC_ALL,
 576           etc.  See locale(5).  --> <!ELEMENT loctext
 577         (#PCDATA) >
 578 
 579 <!ATTLIST loctext
 580         xml:lang    CDATA #REQUIRED >
 581 
 582 <!--
 583   description
 584 
 585     The description holds a set of potentially longer, localized strings that
 586     consist of a short description of the service.
 587 
 588     The description has no attributes.  --> <!ELEMENT description
 589         ( loctext+ ) >
 590 
 591 <!ATTLIST description>
 592 
 593 <!--
 594   common_name
 595 
 596     The common_name holds a set of short, localized strings that
 597     represent a well-known name for the service in the given locale.
 598 
 599     The common_name has no attributes.  --> <!ELEMENT common_name
 600         ( loctext+ ) >
 601 
 602 <!ATTLIST common_name>
 603 
 604 <!--
 605   units
 606 
 607     The units a numerical property is expressed in.  -->
 608 
 609 <!ELEMENT units          ( loctext+ ) >
 610 
 611 <!ATTLIST units>
 612 
 613 <!--
 614   visibility
 615 
 616     Expresses how a property is typically accessed.  This isn't
 617     intended as access control, but as an indicator as to how a
 618     property is used.
 619 
 620     Its attributes are:
 621 
 622       value     'hidden', 'readonly', or 'readwrite' indicating that       the
 623 property should be hidden from the user, shown but          read-only, or
 624 modifiable.  -->
 625 
 626 <!ELEMENT visibility EMPTY>
 627 
 628 <!ATTLIST visibility  value     ( hidden | readonly | readwrite ) #REQUIRED
 629 >
 630 
 631 <!--
 632   value
 633 
 634     Describes a legal value for a property value, and optionally contains a
 635     human-readable name and description for the specified property
 636     value.
 637 
 638     Its attributes are:
 639 
 640       name     A string representation of the value.  -->
 641 
 642 <!ELEMENT value          ( common_name?, description? ) >
 643 
 644 <!ATTLIST value          name CDATA #REQUIRED >
 645 
 646 <!--
 647   values
 648 
 649     Human-readable names and descriptions for valid values of a property.  -->
 650 
 651 <!ELEMENT values    (value+) >
 652 
 653 <!ATTLIST values>
 654 
 655 <!--
 656   cardinality
 657 
 658     Places a constraint on the number of values the property can take
 659     on.
 660 
 661     Its attributes are:  min  minimum number of values      max  maximum
 662 number of values
 663 
 664     Both attributes are optional.  If min is not specified, it defaults to
 665     0.  If max is not specified it indicates an unlimited number of values.
 666     If neither is specified this indicates 0 or more values.  -->
 667 
 668 <!ELEMENT cardinality EMPTY>
 669 
 670 <!ATTLIST cardinality         min  CDATA "0"      max  CDATA
 671 "18446744073709551615">
 672 
 673 <!--
 674   internal_separators
 675 
 676     Indicates the separators used within a property's value used to
 677     separate the actual values.  Used in situations where multiple
 678     values are packed into a single property value instead of using a
 679     multi-valued property.  -->
 680 
 681 <!ELEMENT internal_separators           (#PCDATA) >
 682 
 683 <!ATTLIST internal_separators>
 684 
 685 <!--
 686   range
 687 
 688     Indicates a range of possible integer values.
 689 
 690     Its attributes are:
 691 
 692       min The minimum value of the range (inclusive).
 693       max The maximum value of the range (inclusive).  -->
 694 
 695 <!ELEMENT range      EMPTY>
 696 
 697 <!ATTLIST range          min  CDATA #REQUIRED     max  CDATA #REQUIRED >
 698 
 699 <!--
 700   constraints
 701 
 702     Provides a set of constraints on the values a property can take on.  -->
 703 
 704 <!ELEMENT constraints         ( value*, range* ) > <!ATTLIST   constraints>
 705 
 706 <!--
 707   include_values
 708 
 709     Includes an entire set of values in the choices block.
 710 
 711     Its attributes are:
 712 
 713      type    Either "constraints" or "values", indicating an
 714           inclusion of all values allowed by the property's           constraints or all
 715 values for which there are         human-readable names and descriptions,
 716 respectively.  -->
 717 
 718 <!ELEMENT include_values EMPTY>
 719 
 720 <!ATTLIST include_values      type ( constraints | values ) #REQUIRED >
 721 
 722 <!--
 723   choices
 724 
 725     Provides a set of common choices for the values a property can take
 726     on.  Useful in those cases where the possibilities are unenumerable
 727     or merely inconveniently legion, and a manageable subset is desired
 728     for presentation in a user interface.  -->
 729 
 730 <!ELEMENT choices   ( value*, range*, include_values* )      >
 731 
 732 <!ATTLIST choices>
 733 
 734 <!--
 735   prop_pattern
 736 
 737 
 738     The prop_pattern describes one property of the enclosing property group
 739     pattern.
 740 
 741     Its attributes are:
 742 
 743      name    The property's name.       type    The property's type.
 744      required       If the property group is present, this property is required.
 745 
 746      type can be omitted if required is false.  -->
 747 
 748 <!ELEMENT prop_pattern        ( common_name?, description?, units?, visibility?,
 749 cardinality?,    internal_separators?, values?, constraints?, choices? ) >
 750 
 751 <!ATTLIST prop_pattern        name      CDATA     #REQUIRED      type      ( count
 752 | integer | opaque | host | hostname |            net_address | net_address_v4
 753 | net_address_v6 | time |               astring | ustring | boolean | fmri |
 754 uri ) #IMPLIED      required  ( true | false )    "false" >
 755 
 756 <!--
 757   pg_pattern
 758 
 759     The pg_pattern describes one property group.
 760     Depending on the element's attributes, these descriptions may apply
 761     to just the enclosing service/instance, instances of the enclosing
 762     service, delegates of the service (assuming it is a restarter), or
 763     all services.
 764 
 765     Its attributes are:
 766 
 767      name    The property group's name.  If not specified, it         matches
 768 all property groups with the specified type.      type    The property group's
 769 type.  If not specified, it        matches all property groups with the
 770 specified name.     required       If the property group is required.
 771      target    The scope of the pattern, which may be all, delegate,
 772           instance, or this.  'all' is reserved for framework use          and applies
 773 the template to all services on the system.            'delegate' is reserved
 774 for restarters, and means the           template applies to all services which
 775 use the restarter.            'this' would refer to the defining service or
 776 instance.           'instance' can only be used in a service's template block,
 777           and means the definition applies to all instances of this        service.
 778 
 779 -->
 780 
 781 <!ELEMENT pg_pattern  ( common_name?, description?, prop_pattern* ) >
 782 
 783 <!ATTLIST pg_pattern  name      CDATA     ""   type      CDATA     ""
 784      required  ( true | false )    "false"   target         ( this | instance |
 785 delegate | all )    "this" >
 786 
 787 <!--
 788   template
 789 
 790     The template contains a collection of metadata about the service.
 791     It contains a localizable string that serves as a common,
 792     human-readable name for the service.  (This name should be less than
 793     60 characters in a single byte locale.)  The template may optionally
 794     contain a longer localizable description of the service, a
 795     collection of links to documentation, either in the form of manual
 796     pages or in the form of URI specifications to external documentation
 797     sources (such as docs.sun.com).
 798 
 799     The template has no attributes.  --> <!ELEMENT template
 800         ( common_name, description?, documentation?, pg_pattern* ) >
 801 
 802 <!ATTLIST template>
 803 
 804 <!-- Notification Parameters -->
 805 
 806 <!ELEMENT paramval EMPTY>
 807 
 808 <!ATTLIST paramval  name      CDATA #REQUIRED          value          CDATA
 809 #REQUIRED>
 810 
 811 <!ELEMENT parameter   ( value_node* )>
 812 
 813 <!ATTLIST parameter   name      CDATA #REQUIRED>
 814 
 815 <!ELEMENT event      EMPTY>
 816 
 817 <!ATTLIST event          value          CDATA #REQUIRED>
 818 
 819 <!ELEMENT type           ( ( parameter | paramval )* )>
 820 
 821 <!ATTLIST type           name      CDATA #REQUIRED     active         ( true |
 822 false ) "true" >
 823 
 824 <!--
 825   notification parameters
 826 
 827     This element sets the notification parameters for Software Events and
 828     Fault Management problem lifecycle events.  -->
 829 
 830 <!ELEMENT notification_parameters  ( event, type+ )>
 831 
 832 <!ATTLIST notification_parameters>
 833 
 834 <!-- Services and instances -->
 835 
 836 <!--
 837   create_default_instance
 838 
 839     A flag element indicating that an otherwise empty default instance
 840     of this service (named "default") should be created at install, with
 841     its enabled property set as given.
 842 
 843     Its attribute is
 844 
 845      enabled   [boolean] The initial value for the enabled state of
 846           this instance.  -->
 847 
 848 <!ELEMENT create_default_instance EMPTY      >
 849 
 850 <!ATTLIST create_default_instance  enabled     ( true | false ) #REQUIRED >
 851 
 852 <!--
 853   single_instance
 854 
 855     A flag element stating that this service can only have a single
 856     instance on a particular system.  -->
 857 
 858 <!ELEMENT single_instance EMPTY>
 859 
 860 <!ATTLIST single_instance>
 861 
 862 <!--
 863   instance
 864 
 865     The service instance is the object representing a software component
 866     that will run on the system if enabled.  It contains an enabled
 867     element, a set of dependencies on other services, potentially
 868     customized methods or configuration data, an optional method
 869     context, and a pointer to its restarter.  (If no restarter is
 870     specified, the master restarter, svc.startd(1M), is assumed to be
 871     responsible for the service.)
 872 
 873     Its attributes are
 874 
 875      name The canonical name for this instance of the service.
 876 
 877      enabled   [boolean] The initial value for the enabled state of
 878           this instance.  -->
 879 
 880 <!ELEMENT instance  ( restarter?, dependency*, dependent*, method_context?,
 881      exec_method*, notification_parameters*, property_group*,    template? ) >
 882 
 883 <!ATTLIST instance  name      CDATA #REQUIRED          enabled        ( true |
 884 false ) #REQUIRED >
 885 
 886 <!--
 887   service
 888 
 889     The service contains the set of instances defined by default for
 890     this service, an optional method execution context, any default
 891     methods, the template, and various restrictions or advice applicable
 892     at installation.  The method execution context and template elements
 893     are required for service_bundle documents with type "manifest", but
 894     are optional for "profile" or "archive" documents.
 895 
 896     Its attributes are
 897 
 898      name The canonical name for the service.
 899 
 900      version   [integer] The integer version for this service.
 901 
 902      type Whether this service is a simple service, a delegated
 903           restarter, or a milestone (a synthetic service that         collects a group
 904 of dependencies).  -->
 905 
 906 <!ELEMENT service   ( create_default_instance?,      single_instance?, restarter?,
 907      dependency*, dependent*, method_context?, exec_method*,
 908      notification_parameters*, property_group*, instance*,  stability?, template? )
 909 >
 910 
 911 <!ATTLIST service   name      CDATA #REQUIRED          version        CDATA
 912 #REQUIRED      type      ( service | restarter | milestone ) #REQUIRED >
 913 
 914 <!--
 915   service_bundle
 916 
 917     The bundle possesses two attributes:
 918 
 919      type How this file is to be understood by the framework (or
 920           used in a non-framework compliant way). Standard types           are
 921 'archive', 'manifest', and 'profile'.        name A name for the bundle.
 922 Manifests should be named after         the package which delivered them;
 923 profiles should be       named after the "feature set nickname" they intend to
 924           enable.  -->
 925 
 926 <!ELEMENT service_bundle      (      service_bundle* | service* | xi:include* )>
 927 
 928 <!ATTLIST service_bundle      type   CDATA #REQUIRED     name      CDATA
 929 #REQUIRED>
 930 
 931 
 932 
 933                                  June 2, 2016                               ()