<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<!-- lifted from troff+man by doclifter -->
<refentry id='dbus-daemon'>
<!--   -->
<!--  dbus\-daemon manual page. -->
<!--  Copyright (C) 2003 Red Hat, Inc. -->

<refmeta>
<refentrytitle>dbus-daemon</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv id='name'>
<refname>dbus-daemon</refname>
<refpurpose>Message bus daemon</refpurpose>
</refnamediv>
<!-- body begins here -->
<refsynopsisdiv id='synopsis'>
<cmdsynopsis>
  <command>dbus-daemon</command></cmdsynopsis>
<cmdsynopsis>
  <command>dbus-daemon</command>    <arg choice='opt'>--version </arg>
    <arg choice='opt'>--session </arg>
    <arg choice='opt'>--system </arg>
    <arg choice='opt'>--config-file=<replaceable>FILE</replaceable></arg>
    <arg choice='opt'><arg choice='plain'>--print-address </arg><arg choice='opt'><replaceable>=DESCRIPTOR</replaceable></arg></arg>
    <arg choice='opt'><arg choice='plain'>--print-pid </arg><arg choice='opt'><replaceable>=DESCRIPTOR</replaceable></arg></arg>
    <arg choice='opt'>--fork </arg>
    <sbr/>
</cmdsynopsis>
</refsynopsisdiv>


<refsect1 id='description'><title>DESCRIPTION</title>
<para><command>dbus-daemon</command> is the D-Bus message bus daemon. See
<ulink url='http://www.freedesktop.org/software/dbus/'>http://www.freedesktop.org/software/dbus/</ulink> for more information about
the big picture. D-Bus is first a library that provides one-to-one
communication between any two applications; <command>dbus-daemon</command> is an
application that uses this library to implement a message bus
daemon. Multiple programs connect to the message bus daemon and can
exchange messages with one another.</para>


<para>There are two standard message bus instances: the systemwide message bus 
(installed on many systems as the "messagebus" init service) and the 
per-user-login-session message bus (started each time a user logs in).
<command>dbus-daemon</command> is used for both of these instances, but with 
a different configuration file.</para>


<para>The --session option is equivalent to
"--config-file=/etc/dbus-1/session.conf" and the --system
option is equivalent to
"--config-file=/etc/dbus-1/system.conf". By creating 
additional configuration files and using the --config-file option,
additional special-purpose message bus daemons could be created.</para>


<para>The systemwide daemon is normally launched by an init script, 
standardly called simply "messagebus".</para> 


<para>The systemwide daemon is largely used for broadcasting system events, 
such as changes to the printer queue, or adding/removing devices.</para>


<para>The per-session daemon is used for various interprocess communication 
among desktop applications (however, it is not tied to X or the GUI 
in any way).</para>


<para>SIGHUP will cause the D-Bus daemon to PARTIALLY reload its
configuration file and to flush its user/group information caches. Some
configuration changes would require kicking all apps off the bus; so they will
only take effect if you restart the daemon. Policy changes should take effect
with SIGHUP.</para>

</refsect1>

<refsect1 id='options'><title>OPTIONS</title>
<para>The following options are supported:</para>
<variablelist remap='TP'>
  <varlistentry>
  <term><option>--config-file=FILE</option></term>
  <listitem>
<para>Use the given configuration file.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>--fork</option></term>
  <listitem>
<para>Force the message bus to fork and become a daemon, even if 
the configuration file does not specify that it should.
In most contexts the configuration file already gets this
right, though.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>--print-address[=DESCRIPTOR]</option></term>
  <listitem>
<para>Print the address of the message bus to standard output, or 
to the given file descriptor. This is used by programs that 
launch the message bus.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>--print-pid[=DESCRIPTOR]</option></term>
  <listitem>
<para>Print the process ID of the message bus to standard output, or 
to the given file descriptor. This is used by programs that 
launch the message bus.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>--session</option></term>
  <listitem>
<para>Use the standard configuration file for the per-login-session message
bus.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>--system</option></term>
  <listitem>
<para>Use the standard configuration file for the systemwide message bus.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><option>--version</option></term>
  <listitem>
<para>Print the version of the daemon.</para>

  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='configuration_file'><title>CONFIGURATION FILE</title>
<para>A message bus daemon has a configuration file that specializes it
for a particular application. For example, one configuration 
file might set up the message bus to be a systemwide message bus, 
while another might set it up to be a per-user-login-session bus.</para>


<para>The configuration file also establishes resource limits, security
parameters, and so forth.</para>


<para>The configuration file is not part of any interoperability
specification and its backward compatibility is not guaranteed; this
document is documentation, not specification.</para>


<para>The standard systemwide and per-session message bus setups are
configured in the files "/etc/dbus-1/system.conf" and
"/etc/dbus-1/session.conf".  These files normally
&lt;include&gt; a system-local.conf or session-local.conf; you can put local
overrides in those files to avoid modifying the primary configuration
files.</para>


<para>The configuration file is an XML document. It must have the following
doctype declaration:</para>
<literallayout remap='.nf'>

   &lt;!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
    "<ulink url='http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd'>http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd</ulink>"&gt;

</literallayout> <!-- .fi -->


<para>The following elements may be present in the configuration file.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;busconfig&gt;</emphasis></term>
  <listitem>
<para></para> 
  </listitem>
  </varlistentry>
</variablelist>

<para>Root element.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;type&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>The well-known type of the message bus. Currently known values are
"system" and "session"; if other values are set, they should be
either added to the D-Bus specification, or namespaced.  The last
&lt;type&gt; element "wins" (previous values are ignored).</para>


<para>Example: &lt;type&gt;session&lt;/type&gt;</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;include&gt;</emphasis></term>
  <listitem>
<para></para> 
  </listitem>
  </varlistentry>
</variablelist>

<para>Include a file &lt;include&gt;filename.conf&lt;/include&gt; at this point.  If the
filename is relative, it is located relative to the configuration file
doing the including.</para>


<para>&lt;include&gt; has an optional attribute "ignore_missing=(yes|no)"
which defaults to "no" if not provided. This attribute 
controls whether it's a fatal error for the included file 
to be absent.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;includedir&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>Include all files in &lt;includedir&gt;foo.d&lt;/includedir&gt; at this
point. Files in the directory are included in undefined order.
Only files ending in ".conf" are included.</para>


<para>This is intended to allow extension of the system bus by particular
packages. For example, if CUPS wants to be able to send out
notification of printer queue changes, it could install a file to
/etc/dbus-1/system.d that allowed all apps to receive
this message and allowed the printer daemon user to send it.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;user&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>The user account the daemon should run as, as either a username or a
UID. If the daemon cannot change to this UID on startup, it will exit.
If this element is not present, the daemon will not change or care
about its UID.</para>


<para>The last &lt;user&gt; entry in the file "wins", the others are ignored.</para>


<para>The user is changed after the bus has completed initialization.  So
sockets etc. will be created before changing user, but no data will be
read from clients before changing user. This means that sockets 
and PID files can be created in a location that requires root 
privileges for writing.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;fork&gt;</emphasis></term>
  <listitem>
<para></para>    
  </listitem>
  </varlistentry>
</variablelist>

<para>If present, the bus daemon becomes a real daemon (forks 
into the background, etc.). This is generally used 
rather than the --fork command line option.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;listen&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>Add an address that the bus should listen on. The 
address is in the standard D-Bus format that contains 
a transport name plus possible parameters/options.</para>


<para>Example: &lt;listen&gt;unix:path=/tmp/foo&lt;/listen&gt;</para>


<para>If there are multiple &lt;listen&gt; elements, then the bus listens 
on multiple addresses. The bus will pass its address to 
started services or other interested parties with 
the last address given in &lt;listen&gt; first. That is, 
apps will try to connect to the last &lt;listen&gt; address first.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;auth&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>Lists permitted authorization mechanisms. If this element doesn't
exist, then all known mechanisms are allowed.  If there are multiple
&lt;auth&gt; elements, all the listed mechanisms are allowed.  The order in
which mechanisms are listed is not meaningful.</para>
    

<para>Example: &lt;auth&gt;EXTERNAL&lt;/auth&gt;</para>


<para>Example: &lt;auth&gt;DBUS_COOKIE_SHA1&lt;/auth&gt;</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;servicedir&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>Adds a directory to scan for .service files. Directories are
scanned starting with the last to appear in the config file 
(the first .service file found that provides a particular 
service will be used).</para>


<para>Service files tell the bus how to automatically start a program.
They are primarily used with the per-user-session bus, 
not the systemwide bus.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;standard_session_servicedirs/&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>&lt;standard_session_servicedirs/&gt; is equivalent to specifying a series
of &lt;servicedir/&gt; elements for each of the data directories in the "XDG
Base Directory Specification" with the subdirectory "dbus-1/services",
so for example "/usr/share/dbus-1/services" would be among the
directories searched.</para>


<para>The "XDG Base Directory Specification" can be found at
<ulink url='http://freedesktop.org/wiki/Standards/basedir-spec'>http://freedesktop.org/wiki/Standards/basedir-spec</ulink> if it hasn't moved,
otherwise try your favorite search engine.</para>


<para>The &lt;standard_session_servicedirs/&gt; option is only relevant to the
per-user-session bus daemon defined in
/etc/dbus-1/session.conf. Putting it in any other
configuration file would probably be nonsense.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;limit&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>&lt;limit&gt; establishes a resource limit. For example:</para>
<literallayout remap='.nf'>
  &lt;limit name="max_message_size"&gt;64&lt;/limit&gt;
  &lt;limit name="max_completed_connections"&gt;512&lt;/limit&gt;
</literallayout> <!-- .fi -->


<para>The name attribute is mandatory.
Available limit names are:</para>
<literallayout remap='.nf'>
      "max_incoming_bytes"         : total size in bytes of messages
                                     incoming from a single connection
      "max_outgoing_bytes"         : total size in bytes of messages
                                     queued up for a single connection
      "max_message_size"           : max size of a single message in
                                     bytes
      "service_start_timeout"      : milliseconds (thousandths) until 
                                     a started service has to connect
      "auth_timeout"               : milliseconds (thousandths) a
                                     connection is given to
                                     authenticate
      "max_completed_connections"  : max number of authenticated connections  
      "max_incomplete_connections" : max number of unauthenticated
                                     connections
      "max_connections_per_user"   : max number of completed connections from
                                     the same user
      "max_pending_service_starts" : max number of service launches in
                                     progress at the same time
      "max_names_per_connection"   : max number of names a single 
                                     connection can own
      "max_match_rules_per_connection": max number of match rules for a single 
                                        connection
      "max_replies_per_connection" : max number of pending method 
                                     replies per connection
                                     (number of calls-in-progress)
      "reply_timeout"              : milliseconds (thousandths) 
                                     until a method call times out   
</literallayout> <!-- .fi -->


<para>The max incoming/outgoing queue sizes allow a new message to be queued
if one byte remains below the max. So you can in fact exceed the max
by max_message_size.</para>


<para>max_completed_connections divided by max_connections_per_user is the
number of users that can work together to denial-of-service all other users by using
up all connections on the systemwide bus.</para>


<para>Limits are normally only of interest on the systemwide bus, not the user session 
buses.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;policy&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>The &lt;policy&gt; element defines a security policy to be applied to a particular
set of connections to the bus. A policy is made up of
&lt;allow&gt; and &lt;deny&gt; elements. Policies are normally used with the systemwide bus;
they are analogous to a firewall in that they allow expected traffic 
and prevent unexpected traffic.</para>


<para>The &lt;policy&gt; element has one of three attributes:</para>
<literallayout remap='.nf'>
  context="(default|mandatory)"
  user="username or userid"
  group="group name or gid"
</literallayout> <!-- .fi -->


<para> 
Policies are applied to a connection as follows:</para>
<literallayout remap='.nf'>
   - all context="default" policies are applied
   - all group="connection's user's group" policies are applied
     in undefined order
   - all user="connection's auth user" policies are applied
     in undefined order
   - all context="mandatory" policies are applied
</literallayout> <!-- .fi -->


<para>Policies applied later will override those applied earlier, 
when the policies overlap. Multiple policies with the same 
user/group/context are applied in the order they appear 
in the config file.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;deny&gt;</emphasis></term>
  <listitem>
<para><emphasis remap='I'>&lt;allow&gt;</emphasis></para>

  </listitem>
  </varlistentry>
</variablelist>

<para>A &lt;deny&gt; element appears below a &lt;policy&gt; element and prohibits some
action. The &lt;allow&gt; element makes an exception to previous &lt;deny&gt;
statements, and works just like &lt;deny&gt; but with the inverse meaning.</para>


<para>The possible attributes of these elements are:</para>
<literallayout remap='.nf'>
   send_interface="interface_name"
   send_member="method_or_signal_name" 
   send_error="error_name" 
   send_destination="name" 
   send_type="method_call" | "method_return" | "signal" | "error" 
   send_path="/path/name"

   receive_interface="interface_name"
   receive_member="method_or_signal_name" 
   receive_error="error_name" 
   receive_sender="name" 
   receive_type="method_call" | "method_return" | "signal" | "error"
   receive_path="/path/name"

   send_requested_reply="true" | "false"
   receive_requested_reply="true" | "false"

   eavesdrop="true" | "false"

   own="name"
   own_prefix="name"
   user="username"
   group="groupname"
</literallayout> <!-- .fi -->


<para>Examples:</para>
<literallayout remap='.nf'>
   &lt;deny send_interface="org.freedesktop.System" send_member="Reboot"/&gt; 
   &lt;deny receive_interface="org.freedesktop.System" receive_member="Reboot"/&gt;
   &lt;deny own="org.freedesktop.System"/&gt;
   &lt;deny send_destination="org.freedesktop.System"/&gt;
   &lt;deny receive_sender="org.freedesktop.System"/&gt;
   &lt;deny user="john"/&gt;
   &lt;deny group="enemies"/&gt;
</literallayout> <!-- .fi -->


<para>The &lt;deny&gt; element's attributes determine whether the deny "matches" a
particular action. If it matches, the action is denied (unless later
rules in the config file allow it).</para>


<para>send_destination and receive_sender rules mean that messages may not be
sent to or received from the *owner* of the given name, not that
they may not be sent *to that name*. That is, if a connection
owns services A, B, C, and sending to A is denied, sending to B or C
will not work either.</para>


<para>The other send_* and receive_* attributes are purely textual/by-value
matches against the given field in the message header.</para>


<para>"Eavesdropping" occurs when an application receives a message that
was explicitly addressed to a name the application does not own.
Eavesdropping thus only applies to messages that are addressed to
services (i.e. it does not apply to signals).</para>


<para>For &lt;allow&gt;, eavesdrop="true" indicates that the rule matches even 
when eavesdropping. eavesdrop="false" is the default and means that 
the rule only allows messages to go to their specified recipient.
For &lt;deny&gt;, eavesdrop="true" indicates that the rule matches 
only when eavesdropping. eavesdrop="false" is the default for &lt;deny&gt;
also, but here it means that the rule applies always, even when 
not eavesdropping. The eavesdrop attribute can only be combined with
receive rules (with receive_* attributes).</para>



<para>The [send|receive]_requested_reply attribute works similarly to the eavesdrop
attribute. It controls whether the &lt;deny&gt; or &lt;allow&gt; matches a reply
that is expected (corresponds to a previous method call message).
This attribute only makes sense for reply messages (errors and method
returns), and is ignored for other message types.</para>


<para>For &lt;allow&gt;, [send|receive]_requested_reply="true" is the default and indicates that
only requested replies are allowed by the
rule. [send|receive]_requested_reply="false" means that the rule allows any reply
even if unexpected.</para>


<para>For &lt;deny&gt;, [send|receive]_requested_reply="false" is the default but indicates that
the rule matches only when the reply was not
requested. [send|receive]_requested_reply="true" indicates that the rule applies
always, regardless of pending reply state.</para>


<para>user and group denials mean that the given user or group may 
not connect to the message bus.</para>


<para>For "name", "username", "groupname", etc.
the character "*" can be substituted, meaning "any." Complex globs
like "foo.bar.*" aren't allowed for now because they'd be work to
implement and maybe encourage sloppy security anyway.</para>

<para>&lt;allow own_prefix="a.b"/&gt; allows you to own the name "a.b" or any
name whose first dot-separated elements are "a.b": in particular,
you can own "a.b.c" or "a.b.c.d", but not "a.bc" or "a.c".
This is useful when services like Telepathy and ReserveDevice
define a meaning for subtrees of well-known names, such as
org.freedesktop.Telepathy.ConnectionManager.(anything)
and org.freedesktop.ReserveDevice1.(anything).</para>

<para>It does not make sense to deny a user or group inside a &lt;policy&gt;
for a user or group; user/group denials can only be inside
context="default" or context="mandatory" policies.</para>


<para>A single &lt;deny&gt; rule may specify combinations of attributes such as
send_destination and send_interface and send_type. In this case, the
denial applies only if both attributes match the message being denied.
e.g. &lt;deny send_interface="foo.bar" send_destination="foo.blah"/&gt; would
deny messages with the given interface AND the given bus name.
To get an OR effect you specify multiple &lt;deny&gt; rules.</para>


<para>You can't include both send_ and receive_ attributes on the same
rule, since "whether the message can be sent" and "whether it can be
received" are evaluated separately.</para>


<para>Be careful with send_interface/receive_interface, because the 
interface field in messages is optional.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;selinux&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>The &lt;selinux&gt; element contains settings related to Security Enhanced Linux.
More details below.</para>

<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;associate&gt;</emphasis></term>
  <listitem>

<para></para> <!-- FIXME: blank list item -->
  </listitem>
  </varlistentry>
</variablelist>

<para>An &lt;associate&gt; element appears below an &lt;selinux&gt; element and
creates a mapping. Right now only one kind of association is possible:</para>
<literallayout remap='.nf'>
   &lt;associate own="org.freedesktop.Foobar" context="foo_t"/&gt; 
</literallayout> <!-- .fi -->


<para>This means that if a connection asks to own the name
"org.freedesktop.Foobar" then the source context will be the context
of the connection and the target context will be "foo_t" - see the 
short discussion of SELinux below.</para>


<para>Note, the context here is the target context when requesting a name,
NOT the context of the connection owning the name.</para>


<para>There's currently no way to set a default for owning any name, if
we add this syntax it will look like:</para>
<literallayout remap='.nf'>
   &lt;associate own="*" context="foo_t"/&gt; 
</literallayout> <!-- .fi -->
<para>If you find a reason this is useful, let the developers know.
Right now the default will be the security context of the bus itself.</para>


<para>If two &lt;associate&gt; elements specify the same name, the element
appearing later in the configuration file will be used.</para>

</refsect1>

<refsect1 id='selinux'><title>SELinux</title>
<para>See <ulink url='http://www.nsa.gov/selinux/'>http://www.nsa.gov/selinux/</ulink> for full details on SELinux. Some useful excerpts:</para>


<para>Every subject (process) and object (e.g. file, socket, IPC object,
etc) in the system is assigned a collection of security attributes,
known as a security context. A security context contains all of the
security attributes associated with a particular subject or object
that are relevant to the security policy.</para>


<para>In order to better encapsulate security contexts and to provide
greater efficiency, the policy enforcement code of SELinux typically
handles security identifiers (SIDs) rather than security contexts. A
SID is an integer that is mapped by the security server to a security
context at runtime.</para>


<para>When a security decision is required, the policy enforcement code
passes a pair of SIDs (typically the SID of a subject and the SID of
an object, but sometimes a pair of subject SIDs or a pair of object
SIDs), and an object security class to the security server. The object
security class indicates the kind of object, e.g. a process, a regular
file, a directory, a TCP socket, etc.</para>


<para>Access decisions specify whether or not a permission is granted for a
given pair of SIDs and class. Each object class has a set of
associated permissions defined to control operations on objects with
that class.</para>


<para>D-Bus performs SELinux security checks in two places.</para>


<para>First, any time a message is routed from one connection to another
connection, the bus daemon will check permissions with the security context of
the first connection as source, security context of the second connection
as target, object class "dbus" and requested permission "send_msg".</para>


<para>If a security context is not available for a connection 
(impossible when using UNIX domain sockets), then the target 
context used is the context of the bus daemon itself.
There is currently no way to change this default, because we're 
assuming that only UNIX domain sockets will be used to 
connect to the systemwide bus. If this changes, we'll 
probably add a way to set the default connection context.</para>


<para>Second, any time a connection asks to own a name, 
the bus daemon will check permissions with the security 
context of the connection as source, the security context specified
for the name in the config file as target, object 
class "dbus" and requested permission "acquire_svc".</para>


<para>The security context for a bus name is specified with the 
&lt;associate&gt; element described earlier in this document.
If a name has no security context associated in the 
configuration file, the security context of the bus daemon 
itself will be used.</para>

</refsect1>

<refsect1 id='author'><title>AUTHOR</title>
<para>See <ulink url='http://www.freedesktop.org/software/dbus/doc/AUTHORS'>http://www.freedesktop.org/software/dbus/doc/AUTHORS</ulink></para>

</refsect1>

<refsect1 id='bugs'><title>BUGS</title>
<para>Please send bug reports to the D-Bus mailing list or bug tracker,
see <ulink url='http://www.freedesktop.org/software/dbus/'>http://www.freedesktop.org/software/dbus/</ulink></para>
</refsect1>
</refentry>

