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