]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/org.freedesktop.portable1.xml
btrfs-util: add assert to fix Coverity warning
[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>.</para>
290
291 <para><function>ReattachImage()</function> combines the effects of the
292 <function>AttachImage()</function> method and the <function>DetachImage()</function> method.
293 The difference is that it is allowed to reattach an image while one or more of its units
294 are running. The reattach operation will fail if no matching image is attached.
295 The input parameters match the <function>AttachImage()</function> method, and the return
296 parameters are the combination of the return parameters of the
297 <function>DetachImage()</function> method (first array, units that were removed) and the
298 <function>AttachImage()</function> method (second array, units that were updated or added).</para>
299
300 <para><function>ReattachImageWithExtensions()</function> reattaches a portable image to the system.
301 This method is a superset of <function>ReattachImage()</function> with the addition of
302 a list of extensions as input parameter, which will be overlaid on top of the main
303 image. For more details on this functionality, see the <varname>MountImages=</varname> entry on
304 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
305 and <citerefentry><refentrytitle>systemd-sysext</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
306 </para>
307
308 <para><function>RemoveImage()</function> removes the image with the specified name.</para>
309
310 <para><function>MarkImageReadOnly()</function> toggles the read-only flag of an image.</para>
311
312 <para><function>SetPoolLimit()</function> sets an overall quota limit on the pool of images.</para>
313
314 <para><function>SetImageLimit()</function> sets a per-image quota limit.</para>
315
316 <para>The <function>AttachImageWithExtensions()</function>,
317 <function>DetachImageWithExtensions()</function> and
318 <function>ReattachImageWithExtensions()</function> methods take in options as flags instead of
319 booleans to allow for extendability. <varname>SD_SYSTEMD_PORTABLE_FORCE_ATTACH</varname> will bypass
320 the safety checks that ensure the units are not running while the image is attached or detached.
321 <varname>SD_SYSTEMD_PORTABLE_FORCE_EXTENSION</varname> will bypass the check that ensures the
322 <filename>extension-release.<replaceable>NAME</replaceable></filename> file in the extension image
323 matches the image name. They are defined as follows:</para>
324
325 <programlisting>
326 #define SD_SYSTEMD_PORTABLE_RUNTIME (UINT64_C(1) &lt;&lt; 0)
327 #define SD_SYSTEMD_PORTABLE_FORCE_ATTACH (UINT64_C(1) &lt;&lt; 1)
328 #define SD_SYSTEMD_PORTABLE_FORCE_EXTENSION (UINT64_C(1) &lt;&lt; 2)
329 </programlisting>
330 </refsect2>
331
332 <refsect2>
333 <title>Properties</title>
334
335 <para><varname>PoolPath</varname> specifies the file system path where images are written to.</para>
336
337 <para><varname>PoolUsage</varname> specifies the current usage size of the image pool in bytes.</para>
338
339 <para><varname>PoolLimit</varname> specifies the size limit of the image pool in bytes.</para>
340
341 <para><varname>Profiles</varname> specifies the available runtime profiles for portable services.</para>
342 </refsect2>
343 </refsect1>
344
345 <refsect1>
346 <title>The Image Object</title>
347
348 <para>The service exposes the following interfaces on the Image object on the bus:</para>
349
350 <programlisting executable="systemd-portabled" node="/org/freedesktop/portable1" interface="org.freedesktop.portable1.Image">
351 node /org/freedesktop/portable1 {
352 interface org.freedesktop.portable1.Image {
353 methods:
354 GetOSRelease(out a{ss} os_release);
355 GetMetadata(in as matches,
356 out s image,
357 out ay os_release,
358 out a{say} units);
359 GetMetadataWithExtensions(in as extensions,
360 in as matches,
361 in t flags,
362 out s image,
363 out ay os_release,
364 out a{say} extensions,
365 out a{say} units);
366 GetState(out s state);
367 GetStateWithExtensions(in as extensions,
368 in t flags,
369 out s state);
370 Attach(in as matches,
371 in s profile,
372 in b runtime,
373 in s copy_mode,
374 out a(sss) changes);
375 AttachWithExtensions(in as extensions,
376 in as matches,
377 in s profile,
378 in s copy_mode,
379 in t flags,
380 out a(sss) changes);
381 Detach(in b runtime,
382 out a(sss) changes);
383 DetachWithExtensions(in as extensions,
384 in t flags,
385 out a(sss) changes);
386 Reattach(in as matches,
387 in s profile,
388 in b runtime,
389 in s copy_mode,
390 out a(sss) changes_removed,
391 out a(sss) changes_updated);
392 ReattachWithExtensions(in as extensions,
393 in as matches,
394 in s profile,
395 in s copy_mode,
396 in t flags,
397 out a(sss) changes_removed,
398 out a(sss) changes_updated);
399 Remove();
400 MarkReadOnly(in b read_only);
401 SetLimit(in t limit);
402 properties:
403 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
404 readonly s Name = '...';
405 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
406 readonly s Path = '...';
407 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
408 readonly s Type = '...';
409 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
410 readonly b ReadOnly = ...;
411 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
412 readonly t CreationTimestamp = ...;
413 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
414 readonly t ModificationTimestamp = ...;
415 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
416 readonly t Usage = ...;
417 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
418 readonly t Limit = ...;
419 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
420 readonly t UsageExclusive = ...;
421 @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
422 readonly t LimitExclusive = ...;
423 };
424 interface org.freedesktop.DBus.Peer { ... };
425 interface org.freedesktop.DBus.Introspectable { ... };
426 interface org.freedesktop.DBus.Properties { ... };
427 };
428 </programlisting>
429
430 <!--method GetOSRelease is not documented!-->
431
432 <!--method GetMetadata is not documented!-->
433
434 <!--method GetMetadataWithExtensions is not documented!-->
435
436 <!--method GetState is not documented!-->
437
438 <!--method GetStateWithExtensions is not documented!-->
439
440 <!--method Attach is not documented!-->
441
442 <!--method AttachWithExtensions is not documented!-->
443
444 <!--method Detach is not documented!-->
445
446 <!--method DetachWithExtensions is not documented!-->
447
448 <!--method Reattach is not documented!-->
449
450 <!--method ReattachWithExtensions is not documented!-->
451
452 <!--method Remove is not documented!-->
453
454 <!--method MarkReadOnly is not documented!-->
455
456 <!--method SetLimit is not documented!-->
457
458 <!--Autogenerated cross-references for systemd.directives, do not edit-->
459
460 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.portable1.Image"/>
461
462 <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.portable1.Image"/>
463
464 <variablelist class="dbus-method" generated="True" extra-ref="GetOSRelease()"/>
465
466 <variablelist class="dbus-method" generated="True" extra-ref="GetMetadata()"/>
467
468 <variablelist class="dbus-method" generated="True" extra-ref="GetMetadataWithExtensions()"/>
469
470 <variablelist class="dbus-method" generated="True" extra-ref="GetState()"/>
471
472 <variablelist class="dbus-method" generated="True" extra-ref="GetStateWithExtensions()"/>
473
474 <variablelist class="dbus-method" generated="True" extra-ref="Attach()"/>
475
476 <variablelist class="dbus-method" generated="True" extra-ref="AttachWithExtensions()"/>
477
478 <variablelist class="dbus-method" generated="True" extra-ref="Detach()"/>
479
480 <variablelist class="dbus-method" generated="True" extra-ref="DetachWithExtensions()"/>
481
482 <variablelist class="dbus-method" generated="True" extra-ref="Reattach()"/>
483
484 <variablelist class="dbus-method" generated="True" extra-ref="ReattachWithExtensions()"/>
485
486 <variablelist class="dbus-method" generated="True" extra-ref="Remove()"/>
487
488 <variablelist class="dbus-method" generated="True" extra-ref="MarkReadOnly()"/>
489
490 <variablelist class="dbus-method" generated="True" extra-ref="SetLimit()"/>
491
492 <variablelist class="dbus-property" generated="True" extra-ref="Name"/>
493
494 <variablelist class="dbus-property" generated="True" extra-ref="Path"/>
495
496 <variablelist class="dbus-property" generated="True" extra-ref="Type"/>
497
498 <variablelist class="dbus-property" generated="True" extra-ref="ReadOnly"/>
499
500 <variablelist class="dbus-property" generated="True" extra-ref="CreationTimestamp"/>
501
502 <variablelist class="dbus-property" generated="True" extra-ref="ModificationTimestamp"/>
503
504 <variablelist class="dbus-property" generated="True" extra-ref="Usage"/>
505
506 <variablelist class="dbus-property" generated="True" extra-ref="Limit"/>
507
508 <variablelist class="dbus-property" generated="True" extra-ref="UsageExclusive"/>
509
510 <variablelist class="dbus-property" generated="True" extra-ref="LimitExclusive"/>
511
512 <!--End of Autogenerated section-->
513
514 <refsect2>
515 <title>Methods</title>
516
517 <para>The following methods implement the same operation as the respective methods on the
518 <interfacename>Manager</interfacename> object (see above). However, these methods operate on the image
519 object and hence does not take an image name parameter. Invoking the methods directly on the Manager
520 object has the advantage of not requiring a <function>GetImage()</function> call to get the image object
521 for a specific image name. Calling the methods on the Manager object is hence a round trip
522 optimization. List of methods:
523 <itemizedlist>
524 <listitem><para>GetOSRelease()</para></listitem>
525
526 <listitem><para>GetMetadata()</para></listitem>
527
528 <listitem><para>GetMetadataWithExtensions()</para></listitem>
529
530 <listitem><para>GetState()</para></listitem>
531
532 <listitem><para>Attach()</para></listitem>
533
534 <listitem><para>AttachWithExtensions()</para></listitem>
535
536 <listitem><para>Detach()</para></listitem>
537
538 <listitem><para>DetachWithExtensions()</para></listitem>
539
540 <listitem><para>Reattach()</para></listitem>
541
542 <listitem><para>ReattachWithExtensions()</para></listitem>
543
544 <listitem><para>Remove()</para></listitem>
545
546 <listitem><para>MarkReadOnly()</para></listitem>
547
548 <listitem><para>SetLimit()</para></listitem>
549 </itemizedlist></para>
550 </refsect2>
551
552 <refsect2>
553 <title>Properties</title>
554
555 <para><varname>Name</varname> specifies the image name.</para>
556
557 <para><varname>Path</varname> specifies the file system path where image is stored.</para>
558
559 <para><varname>Type</varname> specifies the image type.</para>
560
561 <para><varname>ReadOnly</varname> specifies whether the image is read-only.</para>
562
563 <para><varname>CreationTimestamp</varname> specifies the image creation timestamp.</para>
564
565 <para><varname>ModificationTimestamp</varname> specifies the image modification timestamp.</para>
566
567 <para><varname>Usage</varname> specifies the image disk usage.</para>
568
569 <para><varname>Limit</varname> specifies the image disk usage limit.</para>
570
571 <para><varname>UsageExclusive</varname> specifies the image disk usage (exclusive).</para>
572
573 <para><varname>LimitExclusive</varname> specifies the image disk usage limit (exclusive).</para>
574 </refsect2>
575 </refsect1>
576
577 <xi:include href="org.freedesktop.locale1.xml" xpointer="versioning"/>
578
579 <refsect1>
580 <title>History</title>
581 <refsect2>
582 <title>The Manager Object</title>
583 <para><function>GetImageStateWithExtensions()</function> was added in version 251.</para>
584 </refsect2>
585 <refsect2>
586 <title>The Image Object</title>
587 <para><function>GetStateWithExtensions()</function> was added in version 251.</para>
588 <para><function>ReattachWithExtensions()</function> was added in version 254.</para>
589 </refsect2>
590 </refsect1>
591 </refentry>