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