]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/org.freedesktop.portable1.xml
update TODO
[thirdparty/systemd.git] / man / org.freedesktop.portable1.xml
1 <?xml version='1.0'?>
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" >
4 <!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
5
6 <refentry id="org.freedesktop.portable1" conditional='ENABLE_PORTABLED'
7 xmlns:xi="http://www.w3.org/2001/XInclude">
8 <refentryinfo>
9 <title>org.freedesktop.portable1</title>
10 <productname>systemd</productname>
11 </refentryinfo>
12
13 <refmeta>
14 <refentrytitle>org.freedesktop.portable1</refentrytitle>
15 <manvolnum>5</manvolnum>
16 </refmeta>
17
18 <refnamediv>
19 <refname>org.freedesktop.portable1</refname>
20 <refpurpose>The D-Bus interface of systemd-portabled</refpurpose>
21 </refnamediv>
22
23 <refsect1>
24 <title>Introduction</title>
25
26 <para>
27 <citerefentry><refentrytitle>systemd-portabled.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
28 is a system service that may be used to attach, detach and inspect portable services. This page describes the
29 D-Bus interface.</para>
30 </refsect1>
31
32 <refsect1>
33 <title>The Manager Object</title>
34
35 <para>The service exposes the following interfaces on the Manager object on the bus:</para>
36
37 <programlisting executable="systemd-portabled" node="/org/freedesktop/portable1" interface="org.freedesktop.portable1.Manager">
38 node /org/freedesktop/portable1 {
39 interface org.freedesktop.portable1.Manager {
40 methods:
41 GetImage(in s image,
42 out o object);
43 ListImages(out a(ssbtttso) images);
44 GetImageOSRelease(in s image,
45 out a{ss} os_release);
46 GetImageMetadata(in s image,
47 in as matches,
48 out s image,
49 out ay os_release,
50 out a{say} units);
51 GetImageMetadataWithExtensions(in s image,
52 in as extensions,
53 in as matches,
54 in t flags,
55 out s image,
56 out ay os_release,
57 out a{say} extensions,
58 out a{say} units);
59 GetImageState(in s image,
60 out s state);
61 GetImageStateWithExtensions(in s image,
62 in as extensions,
63 in t flags,
64 out s state);
65 AttachImage(in s image,
66 in as matches,
67 in s profile,
68 in b runtime,
69 in s copy_mode,
70 out a(sss) changes);
71 AttachImageWithExtensions(in s image,
72 in as extensions,
73 in as matches,
74 in s profile,
75 in s copy_mode,
76 in t flags,
77 out a(sss) changes);
78 DetachImage(in s image,
79 in b runtime,
80 out a(sss) changes);
81 DetachImageWithExtensions(in s image,
82 in as extensions,
83 in t flags,
84 out a(sss) changes);
85 ReattachImage(in s image,
86 in as matches,
87 in s profile,
88 in b runtime,
89 in s copy_mode,
90 out a(sss) changes_removed,
91 out a(sss) changes_updated);
92 ReattachImageWithExtensions(in s image,
93 in as extensions,
94 in as matches,
95 in s profile,
96 in s copy_mode,
97 in t flags,
98 out a(sss) changes_removed,
99 out a(sss) changes_updated);
100 RemoveImage(in s image);
101 MarkImageReadOnly(in s image,
102 in b read_only);
103 SetImageLimit(in s image,
104 in t limit);
105 SetPoolLimit(in t limit);
106 properties:
107 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
108 readonly s PoolPath = '...';
109 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
110 readonly t PoolUsage = ...;
111 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
112 readonly t PoolLimit = ...;
113 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
114 readonly as Profiles = ['...', ...];
115 };
116 interface org.freedesktop.DBus.Peer { ... };
117 interface org.freedesktop.DBus.Introspectable { ... };
118 interface org.freedesktop.DBus.Properties { ... };
119 };
120 </programlisting>
121
122 <!--Autogenerated cross-references for systemd.directives, do not edit-->
123
124 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.portable1.Manager"/>
125
126 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.portable1.Manager"/>
127
128 <variablelist class="dbus-method" generated="True" extra-ref="GetImage()"/>
129
130 <variablelist class="dbus-method" generated="True" extra-ref="ListImages()"/>
131
132 <variablelist class="dbus-method" generated="True" extra-ref="GetImageOSRelease()"/>
133
134 <variablelist class="dbus-method" generated="True" extra-ref="GetImageMetadata()"/>
135
136 <variablelist class="dbus-method" generated="True" extra-ref="GetImageMetadataWithExtensions()"/>
137
138 <variablelist class="dbus-method" generated="True" extra-ref="GetImageState()"/>
139
140 <variablelist class="dbus-method" generated="True" extra-ref="GetImageStateWithExtensions()"/>
141
142 <variablelist class="dbus-method" generated="True" extra-ref="AttachImage()"/>
143
144 <variablelist class="dbus-method" generated="True" extra-ref="AttachImageWithExtensions()"/>
145
146 <variablelist class="dbus-method" generated="True" extra-ref="DetachImage()"/>
147
148 <variablelist class="dbus-method" generated="True" extra-ref="DetachImageWithExtensions()"/>
149
150 <variablelist class="dbus-method" generated="True" extra-ref="ReattachImage()"/>
151
152 <variablelist class="dbus-method" generated="True" extra-ref="ReattachImageWithExtensions()"/>
153
154 <variablelist class="dbus-method" generated="True" extra-ref="RemoveImage()"/>
155
156 <variablelist class="dbus-method" generated="True" extra-ref="MarkImageReadOnly()"/>
157
158 <variablelist class="dbus-method" generated="True" extra-ref="SetImageLimit()"/>
159
160 <variablelist class="dbus-method" generated="True" extra-ref="SetPoolLimit()"/>
161
162 <variablelist class="dbus-property" generated="True" extra-ref="PoolPath"/>
163
164 <variablelist class="dbus-property" generated="True" extra-ref="PoolUsage"/>
165
166 <variablelist class="dbus-property" generated="True" extra-ref="PoolLimit"/>
167
168 <variablelist class="dbus-property" generated="True" extra-ref="Profiles"/>
169
170 <!--End of Autogenerated section-->
171
172 <refsect2>
173 <title>Methods</title>
174
175 <para><function>GetImage()</function> may be used to get the image object path of the image with the
176 specified name.</para>
177
178 <para><function>ListImages()</function> returns an array of all currently known images. The
179 structures in the array consist of the following fields: image name, type, read-only flag, creation
180 time, modification time, current disk space, usage and image object path.</para>
181
182 <para><function>GetImageOSRelease()</function> retrieves the OS release information of an image.
183 This method returns an array of key value pairs read from the
184 <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry> file in
185 the image and is useful to identify the operating system used in a portable service.</para>
186
187 <para><function>GetImageMetadata()</function> retrieves metadata associated with an image.
188 This method returns the image name, the image's <citerefentry><refentrytitle>os-release</refentrytitle>
189 <manvolnum>5</manvolnum></citerefentry> content in the form of a (streamable) array of bytes,
190 and a list of portable units contained in the image, in the form of a string (unit name) and
191 an array of bytes with the content.</para>
192
193 <para><function>GetImageMetadataWithExtensions()</function> retrieves metadata associated with an
194 image. This method is a superset of <function>GetImageMetadata()</function> with the addition of a list
195 of extensions as input parameter, which were overlaid on top of the main image via
196 <function>AttachImageWithExtensions()</function>. The path of each extension and an array of bytes with
197 the content of the respective extension-release file are returned, one such structure for each
198 extension named in the input arguments.</para>
199
200 <para><function>GetImageState()</function> retrieves the image state as one of the following
201 strings:
202 <itemizedlist>
203 <listitem><para>detached</para></listitem>
204
205 <listitem><para>attached</para></listitem>
206
207 <listitem><para>attached-runtime</para></listitem>
208
209 <listitem><para>enabled</para></listitem>
210
211 <listitem><para>enabled-runtime</para></listitem>
212
213 <listitem><para>running</para></listitem>
214
215 <listitem><para>running-runtime</para></listitem>
216 </itemizedlist></para>
217
218 <para><function>GetImageStateWithExtensions()</function> is a superset of
219 <function>GetImageState()</function>, with additional support for a list of extensions
220 as input parameters, which is necessary to query the state in case the image was attached
221 in that particular way. The <varname>flag</varname> parameter is currently unused and
222 reserved for future purposes.</para>
223
224 <para><function>AttachImage()</function> attaches a portable image to the system.
225 This method takes an image path or name, a list of strings that will be used to search for
226 unit files inside the image (partial or complete matches), a string indicating which
227 portable profile to use for the image (see <varname>Profiles</varname> property for
228 a list of available profiles), a boolean indicating whether to attach the image only
229 for the current boot session, and a string representing the preferred copy mode
230 (whether to copy the image or to just symlink it) with the following possible values:
231 <itemizedlist>
232 <listitem><para>(empty)</para></listitem>
233
234 <listitem><para>copy</para></listitem>
235
236 <listitem><para>symlink</para></listitem>
237
238 <listitem><para>mixed</para></listitem>
239 </itemizedlist>
240 If an empty string is passed the security profile drop-ins and images will be symlinked while unit
241 files will be copied, <varname>copy</varname> will copy, <varname>symlink</varname> will prefer
242 linking if possible (e.g.: a unit has to be copied out of an image), and <varname>mixed</varname> will
243 prefer linking the resources owned by the OS (e.g.: the portable profile located within the host's
244 /usr/ tree) but will copy the resources owned by the portable image (e.g.: the unit files and the
245 images). This method returns the list of changes applied to the system (for example, which unit was
246 added and is now available as a system service). Each change is represented as a triplet of strings:
247 the type of change applied, the path on which it was applied, and the source (if any). The type of
248 change applied will be one of the following possible values:
249 <itemizedlist>
250 <listitem><para>copy</para></listitem>
251
252 <listitem><para>symlink</para></listitem>
253
254 <listitem><para>write</para></listitem>
255
256 <listitem><para>mkdir</para></listitem>
257 </itemizedlist>
258 Note that an image cannot be attached if a unit that it contains is already present
259 on the system. Note that this method returns only after all the listed operations are completed,
260 and due to the I/O involved it might take some time.</para>
261
262 <para><function>AttachImageWithExtensions()</function> attaches a portable image to the system.
263 This method is a superset of <function>AttachImage()</function> with the addition of
264 a list of extensions as input parameter, which will be overlaid on top of the main
265 image. When this method is used, detaching must be done by passing the same arguments via the
266 <function>DetachImageWithExtensions()</function> method. For more details on this functionality,
267 see the <varname>MountImages=</varname> entry on
268 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
269 and <citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
270 </para>
271
272 <para><function>DetachImage()</function> detaches a portable image from the system.
273 This method takes an image path or name, and a boolean indicating whether the image to
274 detach was attached only for the current boot session or persistently. This method
275 returns the list of changes applied to the system (for example, which unit was removed
276 and is no longer available as a system service). Each change is represented as a triplet of
277 strings: the type of change applied, the path on which it was applied, and the source
278 (if any). The type of change applied will be one of the following possible values:
279 <itemizedlist>
280 <listitem><para>unlink</para></listitem>
281 </itemizedlist>
282 Note that an image cannot be detached if a unit that it contains is running. Note that this method
283 returns only after all the listed operations are completed, and due to the I/O involved it might take
284 some time.</para>
285
286 <para><function>DetachImageWithExtensions()</function> detaches a portable image from the system.
287 This method is a superset of <function>DetachImage()</function> with the addition of
288 a list of extensions as input parameter, which were overlaid on top of the main
289 image via <function>AttachImageWithExtensions()</function>.
290 The <varname>flag</varname> parameter is currently unused and reserved for future purposes.</para>
291
292 <para><function>ReattachImage()</function> combines the effects of the
293 <function>AttachImage()</function> method and the <function>DetachImage()</function> method.
294 The difference is that it is allowed to reattach an image while one or more of its units
295 are running. The reattach operation will fail if no matching image is attached.
296 The input parameters match the <function>AttachImage()</function> method, and the return
297 parameters are the combination of the return parameters of the
298 <function>DetachImage()</function> method (first array, units that were removed) and the
299 <function>AttachImage()</function> method (second array, units that were updated or added).</para>
300
301 <para><function>ReattachImageWithExtensions()</function> reattaches a portable image to the system.
302 This method is a superset of <function>ReattachImage()</function> with the addition of
303 a list of extensions as input parameter, which will be overlaid on top of the main
304 image. For more details on this functionality, see the <varname>MountImages=</varname> entry on
305 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
306 and <citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
307 The <varname>flag</varname> parameter is currently unused and reserved for future purposes</para>
308
309 <para><function>RemoveImage()</function> removes the image with the specified name.</para>
310
311 <para><function>MarkImageReadOnly()</function> toggles the read-only flag of an image.</para>
312
313 <para><function>SetPoolLimit()</function> sets an overall quota limit on the pool of images.</para>
314
315 <para><function>SetImageLimit()</function> sets a per-image quota limit.</para>
316
317 <para>The <function>AttachImageWithExtensions()</function>,
318 <function>DetachImageWithExtensions()</function> and
319 <function>ReattachImageWithExtensions()</function> methods take in options as flags instead of
320 booleans to allow for extendability. <varname>SD_SYSTEMD_PORTABLE_FORCE_ATTACH</varname> will bypass
321 the safety checks that ensure the units are not running while the image is attached or detached.
322 <varname>SD_SYSTEMD_PORTABLE_FORCE_EXTENSION</varname> will bypass the check that ensures the
323 <filename>extension-release.<replaceable>NAME</replaceable></filename> file in the extension image
324 matches the image name. They are defined as follows:</para>
325
326 <programlisting>
327 #define SD_SYSTEMD_PORTABLE_RUNTIME (UINT64_C(1) &lt;&lt; 0)
328 #define SD_SYSTEMD_PORTABLE_FORCE_ATTACH (UINT64_C(1) &lt;&lt; 1)
329 #define SD_SYSTEMD_PORTABLE_FORCE_EXTENSION (UINT64_C(1) &lt;&lt; 2)
330 </programlisting>
331 </refsect2>
332
333 <refsect2>
334 <title>Properties</title>
335
336 <para><varname>PoolPath</varname> specifies the file system path where images are written to.</para>
337
338 <para><varname>PoolUsage</varname> specifies the current usage size of the image pool in bytes.</para>
339
340 <para><varname>PoolLimit</varname> specifies the size limit of the image pool in bytes.</para>
341
342 <para><varname>Profiles</varname> specifies the available runtime profiles for portable services.</para>
343 </refsect2>
344 </refsect1>
345
346 <refsect1>
347 <title>The Image Object</title>
348
349 <para>The service exposes the following interfaces on the Image object on the bus:</para>
350
351 <programlisting executable="systemd-portabled" node="/org/freedesktop/portable1" interface="org.freedesktop.portable1.Image">
352 node /org/freedesktop/portable1 {
353 interface org.freedesktop.portable1.Image {
354 methods:
355 GetOSRelease(out a{ss} os_release);
356 GetMetadata(in as matches,
357 out s image,
358 out ay os_release,
359 out a{say} units);
360 GetMetadataWithExtensions(in as extensions,
361 in as matches,
362 in t flags,
363 out s image,
364 out ay os_release,
365 out a{say} extensions,
366 out a{say} units);
367 GetState(out s state);
368 GetStateWithExtensions(in as extensions,
369 in t flags,
370 out s state);
371 Attach(in as matches,
372 in s profile,
373 in b runtime,
374 in s copy_mode,
375 out a(sss) changes);
376 AttachWithExtensions(in as extensions,
377 in as matches,
378 in s profile,
379 in s copy_mode,
380 in t flags,
381 out a(sss) changes);
382 Detach(in b runtime,
383 out a(sss) changes);
384 DetachWithExtensions(in as extensions,
385 in t flags,
386 out a(sss) changes);
387 Reattach(in as matches,
388 in s profile,
389 in b runtime,
390 in s copy_mode,
391 out a(sss) changes_removed,
392 out a(sss) changes_updated);
393 ReattachWithExtensions(in as extensions,
394 in as matches,
395 in s profile,
396 in s copy_mode,
397 in t flags,
398 out a(sss) changes_removed,
399 out a(sss) changes_updated);
400 Remove();
401 MarkReadOnly(in b read_only);
402 SetLimit(in t limit);
403 properties:
404 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
405 readonly s Name = '...';
406 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
407 readonly s Path = '...';
408 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
409 readonly s Type = '...';
410 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
411 readonly b ReadOnly = ...;
412 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
413 readonly t CreationTimestamp = ...;
414 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
415 readonly t ModificationTimestamp = ...;
416 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
417 readonly t Usage = ...;
418 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
419 readonly t Limit = ...;
420 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
421 readonly t UsageExclusive = ...;
422 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
423 readonly t LimitExclusive = ...;
424 };
425 interface org.freedesktop.DBus.Peer { ... };
426 interface org.freedesktop.DBus.Introspectable { ... };
427 interface org.freedesktop.DBus.Properties { ... };
428 };
429 </programlisting>
430
431 <!--method GetOSRelease is not documented!-->
432
433 <!--method GetMetadata is not documented!-->
434
435 <!--method GetMetadataWithExtensions is not documented!-->
436
437 <!--method GetState is not documented!-->
438
439 <!--method GetStateWithExtensions is not documented!-->
440
441 <!--method Attach is not documented!-->
442
443 <!--method AttachWithExtensions is not documented!-->
444
445 <!--method Detach is not documented!-->
446
447 <!--method DetachWithExtensions is not documented!-->
448
449 <!--method Reattach is not documented!-->
450
451 <!--method ReattachWithExtensions is not documented!-->
452
453 <!--method Remove is not documented!-->
454
455 <!--method MarkReadOnly is not documented!-->
456
457 <!--method SetLimit is not documented!-->
458
459 <!--Autogenerated cross-references for systemd.directives, do not edit-->
460
461 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.portable1.Image"/>
462
463 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.portable1.Image"/>
464
465 <variablelist class="dbus-method" generated="True" extra-ref="GetOSRelease()"/>
466
467 <variablelist class="dbus-method" generated="True" extra-ref="GetMetadata()"/>
468
469 <variablelist class="dbus-method" generated="True" extra-ref="GetMetadataWithExtensions()"/>
470
471 <variablelist class="dbus-method" generated="True" extra-ref="GetState()"/>
472
473 <variablelist class="dbus-method" generated="True" extra-ref="GetStateWithExtensions()"/>
474
475 <variablelist class="dbus-method" generated="True" extra-ref="Attach()"/>
476
477 <variablelist class="dbus-method" generated="True" extra-ref="AttachWithExtensions()"/>
478
479 <variablelist class="dbus-method" generated="True" extra-ref="Detach()"/>
480
481 <variablelist class="dbus-method" generated="True" extra-ref="DetachWithExtensions()"/>
482
483 <variablelist class="dbus-method" generated="True" extra-ref="Reattach()"/>
484
485 <variablelist class="dbus-method" generated="True" extra-ref="ReattachWithExtensions()"/>
486
487 <variablelist class="dbus-method" generated="True" extra-ref="Remove()"/>
488
489 <variablelist class="dbus-method" generated="True" extra-ref="MarkReadOnly()"/>
490
491 <variablelist class="dbus-method" generated="True" extra-ref="SetLimit()"/>
492
493 <variablelist class="dbus-property" generated="True" extra-ref="Name"/>
494
495 <variablelist class="dbus-property" generated="True" extra-ref="Path"/>
496
497 <variablelist class="dbus-property" generated="True" extra-ref="Type"/>
498
499 <variablelist class="dbus-property" generated="True" extra-ref="ReadOnly"/>
500
501 <variablelist class="dbus-property" generated="True" extra-ref="CreationTimestamp"/>
502
503 <variablelist class="dbus-property" generated="True" extra-ref="ModificationTimestamp"/>
504
505 <variablelist class="dbus-property" generated="True" extra-ref="Usage"/>
506
507 <variablelist class="dbus-property" generated="True" extra-ref="Limit"/>
508
509 <variablelist class="dbus-property" generated="True" extra-ref="UsageExclusive"/>
510
511 <variablelist class="dbus-property" generated="True" extra-ref="LimitExclusive"/>
512
513 <!--End of Autogenerated section-->
514
515 <refsect2>
516 <title>Methods</title>
517
518 <para>The following methods implement the same operation as the respective methods on the
519 <interfacename>Manager</interfacename> object (see above). However, these methods operate on the image
520 object and hence does not take an image name parameter. Invoking the methods directly on the Manager
521 object has the advantage of not requiring a <function>GetImage()</function> call to get the image object
522 for a specific image name. Calling the methods on the Manager object is hence a round trip
523 optimization. List of methods:
524 <itemizedlist>
525 <listitem><para>GetOSRelease()</para></listitem>
526
527 <listitem><para>GetMetadata()</para></listitem>
528
529 <listitem><para>GetMetadataWithExtensions()</para></listitem>
530
531 <listitem><para>GetState()</para></listitem>
532
533 <listitem><para>Attach()</para></listitem>
534
535 <listitem><para>AttachWithExtensions()</para></listitem>
536
537 <listitem><para>Detach()</para></listitem>
538
539 <listitem><para>DetachWithExtensions()</para></listitem>
540
541 <listitem><para>Reattach()</para></listitem>
542
543 <listitem><para>ReattachWithExtensions()</para></listitem>
544
545 <listitem><para>Remove()</para></listitem>
546
547 <listitem><para>MarkReadOnly()</para></listitem>
548
549 <listitem><para>SetLimit()</para></listitem>
550 </itemizedlist></para>
551 </refsect2>
552
553 <refsect2>
554 <title>Properties</title>
555
556 <para><varname>Name</varname> specifies the image name.</para>
557
558 <para><varname>Path</varname> specifies the file system path where image is stored.</para>
559
560 <para><varname>Type</varname> specifies the image type.</para>
561
562 <para><varname>ReadOnly</varname> specifies whether the image is read-only.</para>
563
564 <para><varname>CreationTimestamp</varname> specifies the image creation timestamp.</para>
565
566 <para><varname>ModificationTimestamp</varname> specifies the image modification timestamp.</para>
567
568 <para><varname>Usage</varname> specifies the image disk usage.</para>
569
570 <para><varname>Limit</varname> specifies the image disk usage limit.</para>
571
572 <para><varname>UsageExclusive</varname> specifies the image disk usage (exclusive).</para>
573
574 <para><varname>LimitExclusive</varname> specifies the image disk usage limit (exclusive).</para>
575 </refsect2>
576 </refsect1>
577
578 <xi:include href="org.freedesktop.locale1.xml" xpointer="versioning"/>
579
580 <refsect1>
581 <title>History</title>
582 <refsect2>
583 <title>The Manager Object</title>
584 <para><function>GetImageStateWithExtensions()</function> was added in version 251.</para>
585 </refsect2>
586 <refsect2>
587 <title>The Image Object</title>
588 <para><function>GetStateWithExtensions()</function> was added in version 251.</para>
589 <para><function>ReattachWithExtensions()</function> was added in version 254.</para>
590 </refsect2>
591 </refsect1>
592 </refentry>