Server *server = NULL;
-static int disable_user_service_publishing = 0;
-
static int dbus_connect(void);
static void dbus_disconnect(void);
AVAHI_LLIST_REMOVE(Client, clients, server->clients, c);
avahi_free(c);
+ assert(server->n_clients >= 1);
server->n_clients --;
- assert(server->n_clients >= 0);
}
static Client *client_get(const char *name, int create) {
if (!create)
return NULL;
- if (server->n_clients >= CLIENTS_MAX)
+ if (server->n_clients >= server->n_clients_max)
return NULL;
/* If not existent yet, create a new entry */
} else if (dbus_message_is_method_call(m, AVAHI_DBUS_INTERFACE_SERVER, "GetNetworkInterfaceNameByIndex")) {
int32_t idx;
- char name[IF_NAMESIZE];
+ char name[IF_NAMESIZE];
if (!(dbus_message_get_args(m, &error, DBUS_TYPE_INT32, &idx, DBUS_TYPE_INVALID))) {
avahi_log_warn("Error parsing Server::GetNetworkInterfaceNameByIndex message");
goto fail;
}
- if (disable_user_service_publishing)
+ if (server->disable_user_service_publishing)
return avahi_dbus_respond_error(c, m, AVAHI_ERR_NOT_PERMITTED, NULL);
if (!(client = client_get(dbus_message_get_sender(m), TRUE))) {
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn(__FILE__": Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn(__FILE__": Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn(__FILE__": Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_CLIENTS, NULL);
}
- if (client->n_objects >= OBJECTS_PER_CLIENT_MAX) {
+ if (client->n_objects >= server->n_objects_per_client_max) {
avahi_log_warn("Too many objects for client '%s', client request failed.", client->name);
return avahi_dbus_respond_error(c, m, AVAHI_ERR_TOO_MANY_OBJECTS, NULL);
}
}
}
-int dbus_protocol_setup(const AvahiPoll *poll_api, int _disable_user_service_publishing, int force) {
+int dbus_protocol_setup(const AvahiPoll *poll_api,
+ int _disable_user_service_publishing,
+ int _n_clients_max,
+ int _n_objects_per_client_max,
+ int _n_entries_per_entry_group_max,
+ int force) {
- disable_user_service_publishing = _disable_user_service_publishing;
server = avahi_new(Server, 1);
AVAHI_LLIST_HEAD_INIT(Clients, server->clients);
server->poll_api = poll_api;
server->reconnect_timeout = NULL;
server->reconnect = force;
+ server->disable_user_service_publishing = _disable_user_service_publishing;
+ server->n_clients_max = _n_clients_max > 0 ? _n_clients_max : DEFAULT_CLIENTS_MAX;
+ server->n_objects_per_client_max = _n_objects_per_client_max > 0 ? _n_objects_per_client_max : DEFAULT_OBJECTS_PER_CLIENT_MAX;
+ server->n_entries_per_entry_group_max = _n_entries_per_entry_group_max > 0 ? _n_entries_per_entry_group_max : DEFAULT_ENTRIES_PER_ENTRY_GROUP_MAX;
if (dbus_connect() < 0) {
struct timeval tv;
USA.
-->
- <manpage name="avahi-daemon.conf" section="5" desc="avahi-daemon configuration file">
-
- <synopsis>
- <cmd>@pkgsysconfdir@/avahi-daemon.conf</cmd>
- </synopsis>
-
- <description>
- <p><file>avahi-daemon.conf</file> is the configuration file for avahi-daemon.</p>
- </description>
-
- <section name="Section [Server]">
-
- <option>
- <p><opt>host-name=</opt> Set the host name avahi-daemon tries
- to register on the LAN. If omited defaults to the system host
- name as set with the sethostname() system call.</p>
- </option>
-
- <option>
- <p><opt>domain-name=</opt> Set the default domain name avahi-daemon
- tries to register its host name and services on the LAN in. If
- omitted defaults to ".local".</p>
- </option>
-
- <option>
- <p><opt>browse-domains=</opt> Set a comma separated list of
- browsing domains (in addition to the default one and those
- announced inside the default browsing domain). Please note
- that the user may specify additional browsing domains on the
- client side, either by setting $AVAHI_BROWSE_DOMAINS to a list
- of colon separated domains or by adding them to the XDG config
- file <file>~/.config/avahi/browse-domains</file> (separated by
- newlines).</p>
-
- </option>
-
- <option>
- <p><opt>use-ipv4=</opt> Takes a boolean value ("yes" or
- "no"). If set to "no" avahi-daemon will not use IPv4
- sockets. Default is "yes".</p>
- </option>
-
- <option>
- <p><opt>use-ipv6=</opt> Takes a boolean value ("yes" or
- "no"). If set to "no" avahi-daemon will not use IPv6
- sockets. Default is "yes".</p>
- </option>
-
- <option>
- <p><opt>allow-interfaces=</opt> Set a comma separated list of
- allowed network interfaces that should be used by the
- avahi-daemon. Other interfaces will be ignored. If set to the
- empty list all local interfaces except loopback and
- point-to-point will be used.</p>
- </option>
-
- <option>
- <p><opt>deny-interfaces=</opt> Set a comma separated list of
- network interfaces that should be ignored by avahi-daemon.
- Other not specified interfaces will be used, unless
- <opt>allow-interfaces</opt> is set. This option takes
- precedence over <opt>deny-interfaces</opt>.</p>
- </option>
-
- <option>
- <p><opt>check-response-ttl=</opt> Takes a boolean value ("yes"
- or "no"). If set to "yes", an additional security check is
- activated: incoming IP packets will be ignored unless the IP
- TTL is 255. Earlier mDNS specifications required this
- check. Since this feature may be incompatible with newer
- implementations of mDNS it defaults to "no". On the other hand
- it provides extra security.</p>
- </option>
-
- <option>
- <p><opt>use-iff-running=</opt> Takes a boolean value ("yes" or
- "no"). If set to "yes" avahi-daemon monitors the IFF_RUNNING
- flag bit which is used by some (modern) network drivers to
- tell user space if a network cable is plugged in (in case of
- copper ethernet), or the network card is associated with some
- kind of network (in case of WLAN). If IFF_RUNNING is set
- avahi-daemon will automatically announce its services on that
- network. Unfortunately far too many network drivers do not
- support this flag or support it in a broken way. Therefore
- this option defaults to "no".</p>
- </option>
-
- <option>
- <p><opt>enable-dbus=</opt> Takes either "yes", "no" or
- "warn". If set to "yes" avahi-daemon connects to D-Bus,
- offering an object oriented client API. It is only available
- if Avahi has been compiled with <opt>--enable-dbus</opt> in
- which case it defaults to "yes". "warn" behaves like "yes",
- but the daemon starts up even when it fails to connect to a
- D-Bus daemon. In addition, if the connection to the D-Bus
- daemon is terminated we try to reconnect. (Unless we are in a
- chroot() environment where this definitely will fail.) </p>
- </option>
-
- <option>
- <p><opt>disallow-other-stacks=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes" no other process is allowed
- to bind to UDP port 5353. This effectively impedes other mDNS
- stacks from running on the host. Use this as a security
- measure to make sure that only Avahi is responsible for mDNS
- traffic. Please note that we do not recommend running multiple
- mDNS stacks on the same host simultaneously. This hampers
- reliability and is a waste of resources. However, to not annoy
- people this option defaults to "no".</p>
- </option>
-
- <option>
- <p><opt>allow-point-to-point=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes" avahi-daemon will make use of
- interfaces with the POINTOPOINT flag set. This option defaults
- to "no" as it might make mDNS unreliable due to usually large
- latencies with such links and opens a potential security hole
- by allowing mDNS access from Internet connections. Use with
- care and YMMV!</p>
- </option>
-
- </section>
-
- <section name="Section [wide-area]">
- <option>
- <p><opt>enable-wide-area=</opt> Takes a boolean value
- ("yes" or "no"). Enable wide-area DNS-SD, aka
- DNS-SD over unicast DNS. If this is enabled only domains
- ending in .local will be resolved on mDNS, all other domains
- are resolved via unicast DNS. If you want to maintain multiple
- different multicast DNS domains even with this option enabled
- we encourage you to use subdomains of .local, such as
- "kitchen.local". This option defaults to "yes".</p>
- </option>
-
- </section>
-
- <section name="Section [publish]">
-
- <option><p><opt>disable-publishing=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes", no record will be published by
- Avahi, not even address records for the local host. Avahi will
- be started in a querying-only mode. Use this is a security
- measure. This option defaults to "no"</p></option>
-
- <option><p><opt>disable-user-service-publishing=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes", Avahi will still publish
- address records and suchlike but will not allow user
- applications to publish services. Use this is a security
- measure. This option defaults to "no"</p></option>
-
- <option>
- <p><opt>add-service-cookie=</opt> Takes a boolean value ("yes"
- or "no"). If set to "yes" an implicit TXT entry will be added
- to all locally registered services, containing a cookie value
- which is chosen randomly on daemon startup. This can be used
- to detect if two services on two different
- interfaces/protocols are actually identical. Defaults to
- "no".</p>
- </option>
-
- <option>
- <p><opt>publish-addresses=</opt> Takes a boolean value ("yes"
- or "no"). If set to "yes" avahi-daemon will register mDNS
- address records for all local IP addresses. Unless you want to
- use avahi-daemon exclusively for browsing it's recommended to
- enable this. If you plan to register local services you need
- to enable this option. Defaults to "yes".</p>
- </option>
-
- <option>
- <p><opt>publish-hinfo=</opt> Takes a boolean value ("yes" or
- "no"). If set to "yes" avahi-daemon will register an mDNS
- HINFO record on all interfaces which contains information
- about the local operating system and CPU, which might be
- useful for administrative purposes. This is recommended by the
- mDNS specification but not required. For the sake of privacy
- you might choose to disable this feature. Defaults to
- "yes."</p>
- </option>
-
- <option>
- <p><opt>publish-workstation=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes" avahi-daemon will register a
- service of type "_workstation._tcp" on the local LAN. This
- might be useful for administrative purposes (i.e. browse for
- all PCs on the LAN), but is not required or recommended by any
- specification. Newer MacOS X releases register a service of
- this type. Defaults to "yes".</p>
- </option>
-
- <option>
- <p><opt>publish-domain=</opt> Takes a boolean value ("yes" or
- "no"). If set to "yes" avahi-daemon will announce the locally
- used domain name (see above) for browsing by other
- hosts. Defaults to "yes".</p>
- </option>
-
- <option>
- <p><opt>publish-dns-servers=</opt> Takes a comma separated
- list of IP addresses for unicast DNS servers. You can use this
- to announce unicast DNS servers via mDNS. When used in
- conjunction with avahi-dnsconfd on the client
- side this allows DHCP-like configuration of unicast DNS
- servers.</p>
- </option>
-
- <option>
- <p><opt>publish-resolv-conf-dns-servers=</opt> Takes a boolean
- value ("yes" or "no"). If set to "yes" avahi-daemon will
- publish the unicast DNS servers specified in
- <file>/etc/resolv.conf</file> in addition to those specified
- with <opt>publish-dns-servers</opt>. Send avahi-daemon a
- SIGHUP to have it reload this file. Defaults to "no".</p>
- </option>
-
- <option>
- <p><opt>publish-aaaa-on-ipv4=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes" avahi-daemon will publish an
- IPv6 AAAA record via IPv4, i.e. the local IPv6 addresses can be
- resolved using an IPv4 transport. Only useful when IPv4 is
- enabled with <opt>use-ipv4=true</opt>. Defaults to "yes".</p>
- </option>
-
- <option>
- <p><opt>publish-a-on-ipv6=</opt> Takes a boolean value
- ("yes" or "no"). If set to "yes" avahi-daemon will publish an
- IPv4 A record via IPv6, i.e. the local IPv4 addresses can be
- resolved using an IPv6 transport. Only useful when IPv6 is
- enabled with <opt>use-ipv6=true</opt>. Defaults to "no".</p>
- </option>
-
- </section>
-
- <section name="Section [reflector]">
- <option>
- <p><opt>enable-reflector=</opt> Takes a boolean value ("yes"
- or "no"). If set to "yes" avahi-daemon will reflect incoming
- mDNS requests to all local network interfaces, effectively
- allowing clients to browse mDNS/DNS-SD services on all
- networks connected to the gateway. The gateway is somewhat
- intelligent and should work with all kinds of mDNS traffic,
- though some functionality is lost (specifically the unicast
- reply bit, which is used rarely anyway). Make sure to not run
- multiple reflectors between the same networks, this might
- cause them to play Ping Pong with mDNS packets. Defaults to
- "no".</p>
- </option>
-
- <option>
- <p><opt>reflect-ipv=</opt> Takes a boolean value ("yes" or
- "no"). If set to "yes" and <opt>enable-reflector</opt> is
- enabled, avahi-daemon will forward mDNS traffic between IPv4
- and IPv6, which is usually not recommended. Defaults to "no".</p>
- </option>
- </section>
-
- <section name="Section [rlimits]">
- <p>This section is used to define system resource limits for the
- daemon. See <manref section="2" name="setrlimit"/> for more
- information. If any of the options is not specified in the configuration
- file, avahi-daemon does not change it from the system
- defaults.</p>
-
-
- <option>
- <p><opt>rlimit-as=</opt> Value in bytes for RLIMIT_AS (maximum size of the process's virtual memory). Sensible values are heavily system dependent.</p>
- </option>
-
- <option>
- <p><opt>rlimit-core=</opt> Value in bytes for RLIMIT_CORE (maximum core file size). Unless you want to debug avahi-daemon, it is safe to set this to 0.</p>
- </option>
-
- <option>
- <p><opt>rlimit-data=</opt> Value in bytes for RLIMIT_DATA (maximum size of the process's data segment). Sensible values are heavily system dependent.</p>
- </option>
-
- <option>
- <p><opt>rlimit-fsize=</opt> Value for RLIMIT_FSIZE (maximum size of files the process may create). Since avahi-daemon shouldn't write any files to disk, it is safe to set this to 0.</p>
- </option>
-
- <option>
- <p><opt>rlimit-nofile=</opt> Value for RLIMIT_NOFILE (open file descriptors). avahi-daemon shouldn't need more than 15 to 20 open file descriptors concurrently.</p>
- </option>
-
- <option>
- <p><opt>rlimit-stack=</opt> Value in bytes for RLIMIT_STACK (maximum size of the process stack). Sensible values are heavily system dependent.</p>
- </option>
-
- <option>
- <p><opt>rlimit-nproc=</opt> Value for RLIMIT_NPROC (number of process of user). avahi-daemon forks of a helper process on systems where <manref name="chroot" section="2"/> is available. Therefore this value should not be set below 2.</p>
- </option>
-
- </section>
-
- <section name="Authors">
- <p>The Avahi Developers <@PACKAGE_BUGREPORT@>; Avahi is
- available from <url href="@PACKAGE_URL@"/></p>
- </section>
-
- <section name="See also">
- <p>
- <manref name="avahi-daemon" section="8"/>, <manref name="avahi-dnsconfd" section="8"/>
- </p>
- </section>
-
- <section name="Comments">
- <p>This man page was written using <manref name="xml2man" section="1"
- href="http://masqmail.cx/xml2man/"/> by Oliver Kurth.</p>
- </section>
-
- </manpage>
+<manpage name="avahi-daemon.conf" section="5" desc="avahi-daemon configuration file">
+
+ <synopsis>
+ <cmd>@pkgsysconfdir@/avahi-daemon.conf</cmd>
+ </synopsis>
+
+ <description>
+ <p><file>avahi-daemon.conf</file> is the configuration file for avahi-daemon.</p>
+ </description>
+
+ <section name="Section [Server]">
+
+ <option>
+ <p><opt>host-name=</opt> Set the host name avahi-daemon tries
+ to register on the LAN. If omited defaults to the system host
+ name as set with the sethostname() system call.</p>
+ </option>
+
+ <option>
+ <p><opt>domain-name=</opt> Set the default domain name avahi-daemon
+ tries to register its host name and services on the LAN in. If
+ omitted defaults to ".local".</p>
+ </option>
+
+ <option>
+ <p><opt>browse-domains=</opt> Set a comma separated list of
+ browsing domains (in addition to the default one and those
+ announced inside the default browsing domain). Please note
+ that the user may specify additional browsing domains on the
+ client side, either by setting $AVAHI_BROWSE_DOMAINS to a list
+ of colon separated domains or by adding them to the XDG config
+ file <file>~/.config/avahi/browse-domains</file> (separated by
+ newlines).</p>
+
+ </option>
+
+ <option>
+ <p><opt>use-ipv4=</opt> Takes a boolean value ("yes" or
+ "no"). If set to "no" avahi-daemon will not use IPv4
+ sockets. Default is "yes".</p>
+ </option>
+
+ <option>
+ <p><opt>use-ipv6=</opt> Takes a boolean value ("yes" or
+ "no"). If set to "no" avahi-daemon will not use IPv6
+ sockets. Default is "yes".</p>
+ </option>
+
+ <option>
+ <p><opt>allow-interfaces=</opt> Set a comma separated list of
+ allowed network interfaces that should be used by the
+ avahi-daemon. Other interfaces will be ignored. If set to the
+ empty list all local interfaces except loopback and
+ point-to-point will be used.</p>
+ </option>
+
+ <option>
+ <p><opt>deny-interfaces=</opt> Set a comma separated list of
+ network interfaces that should be ignored by avahi-daemon.
+ Other not specified interfaces will be used, unless
+ <opt>allow-interfaces</opt> is set. This option takes
+ precedence over <opt>deny-interfaces</opt>.</p>
+ </option>
+
+ <option>
+ <p><opt>check-response-ttl=</opt> Takes a boolean value ("yes"
+ or "no"). If set to "yes", an additional security check is
+ activated: incoming IP packets will be ignored unless the IP
+ TTL is 255. Earlier mDNS specifications required this
+ check. Since this feature may be incompatible with newer
+ implementations of mDNS it defaults to "no". On the other hand
+ it provides extra security.</p>
+ </option>
+
+ <option>
+ <p><opt>use-iff-running=</opt> Takes a boolean value ("yes" or
+ "no"). If set to "yes" avahi-daemon monitors the IFF_RUNNING
+ flag bit which is used by some (modern) network drivers to
+ tell user space if a network cable is plugged in (in case of
+ copper ethernet), or the network card is associated with some
+ kind of network (in case of WLAN). If IFF_RUNNING is set
+ avahi-daemon will automatically announce its services on that
+ network. Unfortunately far too many network drivers do not
+ support this flag or support it in a broken way. Therefore
+ this option defaults to "no".</p>
+ </option>
+
+ <option>
+ <p><opt>enable-dbus=</opt> Takes either "yes", "no" or
+ "warn". If set to "yes" avahi-daemon connects to D-Bus,
+ offering an object oriented client API. It is only available
+ if Avahi has been compiled with <opt>--enable-dbus</opt> in
+ which case it defaults to "yes". "warn" behaves like "yes",
+ but the daemon starts up even when it fails to connect to a
+ D-Bus daemon. In addition, if the connection to the D-Bus
+ daemon is terminated we try to reconnect. (Unless we are in a
+ chroot() environment where this definitely will fail.) </p>
+ </option>
+
+ <option>
+ <p><opt>disallow-other-stacks=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes" no other process is allowed
+ to bind to UDP port 5353. This effectively impedes other mDNS
+ stacks from running on the host. Use this as a security
+ measure to make sure that only Avahi is responsible for mDNS
+ traffic. Please note that we do not recommend running multiple
+ mDNS stacks on the same host simultaneously. This hampers
+ reliability and is a waste of resources. However, to not annoy
+ people this option defaults to "no".</p>
+ </option>
+
+ <option>
+ <p><opt>allow-point-to-point=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes" avahi-daemon will make use of
+ interfaces with the POINTOPOINT flag set. This option defaults
+ to "no" as it might make mDNS unreliable due to usually large
+ latencies with such links and opens a potential security hole
+ by allowing mDNS access from Internet connections. Use with
+ care and YMMV!</p>
+ </option>
+
+ <option>
+ <p><opt>cache-entries-max=</opt> Takes an unsigned integer
+ specifying how many resource records are cached per
+ interface. Bigger values allow mDNS work correctly in large LANs
+ but also increase memory consumption.</p>
+ </option>
+
+ <option>
+ <p><opt>clients-max=</opt> Takes an unsigned integer. The
+ maximum number of concurrent D-Bus clients allowed. If the
+ maximum number is reached further clients will be refused until
+ at least one existing client disconnects.</p>
+ </option>
+
+ <option>
+ <p><opt>objects-per-client-max=</opt> Takes an unsigned
+ integer. The maximum number of objects (entry groups, browsers,
+ resolvers) that may be registered per client at a time. If the
+ maximum number is reached further object creation will be
+ refused until at least one object is freed.</p>
+ </option>
+
+ <option>
+ <p><opt>entries-per-entry-group-max=</opt> Takes an unsigned
+ integer. The maximum number of entries (resource records) per
+ entry group at a time. If the maximum number is reached further
+ resource records may not be added to an entry group.</p>
+ </option>
+
+ </section>
+
+ <section name="Section [wide-area]">
+ <option>
+ <p><opt>enable-wide-area=</opt> Takes a boolean value
+ ("yes" or "no"). Enable wide-area DNS-SD, aka
+ DNS-SD over unicast DNS. If this is enabled only domains
+ ending in .local will be resolved on mDNS, all other domains
+ are resolved via unicast DNS. If you want to maintain multiple
+ different multicast DNS domains even with this option enabled
+ we encourage you to use subdomains of .local, such as
+ "kitchen.local". This option defaults to "yes".</p>
+ </option>
+
+ </section>
+
+ <section name="Section [publish]">
+
+ <option><p><opt>disable-publishing=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes", no record will be published by
+ Avahi, not even address records for the local host. Avahi will
+ be started in a querying-only mode. Use this is a security
+ measure. This option defaults to "no"</p></option>
+
+ <option><p><opt>disable-user-service-publishing=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes", Avahi will still publish
+ address records and suchlike but will not allow user
+ applications to publish services. Use this is a security
+ measure. This option defaults to "no"</p></option>
+
+ <option>
+ <p><opt>add-service-cookie=</opt> Takes a boolean value ("yes"
+ or "no"). If set to "yes" an implicit TXT entry will be added
+ to all locally registered services, containing a cookie value
+ which is chosen randomly on daemon startup. This can be used
+ to detect if two services on two different
+ interfaces/protocols are actually identical. Defaults to
+ "no".</p>
+ </option>
+
+ <option>
+ <p><opt>publish-addresses=</opt> Takes a boolean value ("yes"
+ or "no"). If set to "yes" avahi-daemon will register mDNS
+ address records for all local IP addresses. Unless you want to
+ use avahi-daemon exclusively for browsing it's recommended to
+ enable this. If you plan to register local services you need
+ to enable this option. Defaults to "yes".</p>
+ </option>
+
+ <option>
+ <p><opt>publish-hinfo=</opt> Takes a boolean value ("yes" or
+ "no"). If set to "yes" avahi-daemon will register an mDNS
+ HINFO record on all interfaces which contains information
+ about the local operating system and CPU, which might be
+ useful for administrative purposes. This is recommended by the
+ mDNS specification but not required. For the sake of privacy
+ you might choose to disable this feature. Defaults to
+ "yes."</p>
+ </option>
+
+ <option>
+ <p><opt>publish-workstation=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes" avahi-daemon will register a
+ service of type "_workstation._tcp" on the local LAN. This
+ might be useful for administrative purposes (i.e. browse for
+ all PCs on the LAN), but is not required or recommended by any
+ specification. Newer MacOS X releases register a service of
+ this type. Defaults to "yes".</p>
+ </option>
+
+ <option>
+ <p><opt>publish-domain=</opt> Takes a boolean value ("yes" or
+ "no"). If set to "yes" avahi-daemon will announce the locally
+ used domain name (see above) for browsing by other
+ hosts. Defaults to "yes".</p>
+ </option>
+
+ <option>
+ <p><opt>publish-dns-servers=</opt> Takes a comma separated
+ list of IP addresses for unicast DNS servers. You can use this
+ to announce unicast DNS servers via mDNS. When used in
+ conjunction with avahi-dnsconfd on the client
+ side this allows DHCP-like configuration of unicast DNS
+ servers.</p>
+ </option>
+
+ <option>
+ <p><opt>publish-resolv-conf-dns-servers=</opt> Takes a boolean
+ value ("yes" or "no"). If set to "yes" avahi-daemon will
+ publish the unicast DNS servers specified in
+ <file>/etc/resolv.conf</file> in addition to those specified
+ with <opt>publish-dns-servers</opt>. Send avahi-daemon a
+ SIGHUP to have it reload this file. Defaults to "no".</p>
+ </option>
+
+ <option>
+ <p><opt>publish-aaaa-on-ipv4=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes" avahi-daemon will publish an
+ IPv6 AAAA record via IPv4, i.e. the local IPv6 addresses can be
+ resolved using an IPv4 transport. Only useful when IPv4 is
+ enabled with <opt>use-ipv4=true</opt>. Defaults to "yes".</p>
+ </option>
+
+ <option>
+ <p><opt>publish-a-on-ipv6=</opt> Takes a boolean value
+ ("yes" or "no"). If set to "yes" avahi-daemon will publish an
+ IPv4 A record via IPv6, i.e. the local IPv4 addresses can be
+ resolved using an IPv6 transport. Only useful when IPv6 is
+ enabled with <opt>use-ipv6=true</opt>. Defaults to "no".</p>
+ </option>
+
+ </section>
+
+ <section name="Section [reflector]">
+ <option>
+ <p><opt>enable-reflector=</opt> Takes a boolean value ("yes"
+ or "no"). If set to "yes" avahi-daemon will reflect incoming
+ mDNS requests to all local network interfaces, effectively
+ allowing clients to browse mDNS/DNS-SD services on all
+ networks connected to the gateway. The gateway is somewhat
+ intelligent and should work with all kinds of mDNS traffic,
+ though some functionality is lost (specifically the unicast
+ reply bit, which is used rarely anyway). Make sure to not run
+ multiple reflectors between the same networks, this might
+ cause them to play Ping Pong with mDNS packets. Defaults to
+ "no".</p>
+ </option>
+
+ <option>
+ <p><opt>reflect-ipv=</opt> Takes a boolean value ("yes" or
+ "no"). If set to "yes" and <opt>enable-reflector</opt> is
+ enabled, avahi-daemon will forward mDNS traffic between IPv4
+ and IPv6, which is usually not recommended. Defaults to "no".</p>
+ </option>
+ </section>
+
+ <section name="Section [rlimits]">
+ <p>This section is used to define system resource limits for the
+ daemon. See <manref section="2" name="setrlimit"/> for more
+ information. If any of the options is not specified in the configuration
+ file, avahi-daemon does not change it from the system
+ defaults.</p>
+
+ <option>
+ <p><opt>rlimit-as=</opt> Value in bytes for RLIMIT_AS (maximum size of the process's virtual memory). Sensible values are heavily system dependent.</p>
+ </option>
+
+ <option>
+ <p><opt>rlimit-core=</opt> Value in bytes for RLIMIT_CORE (maximum core file size). Unless you want to debug avahi-daemon, it is safe to set this to 0.</p>
+ </option>
+
+ <option>
+ <p><opt>rlimit-data=</opt> Value in bytes for RLIMIT_DATA (maximum size of the process's data segment). Sensible values are heavily system dependent.</p>
+ </option>
+
+ <option>
+ <p><opt>rlimit-fsize=</opt> Value for RLIMIT_FSIZE (maximum size of files the process may create). Since avahi-daemon shouldn't write any files to disk, it is safe to set this to 0.</p>
+ </option>
+
+ <option>
+ <p><opt>rlimit-nofile=</opt> Value for RLIMIT_NOFILE (open file descriptors). avahi-daemon shouldn't need more than 15 to 20 open file descriptors concurrently.</p>
+ </option>
+
+ <option>
+ <p><opt>rlimit-stack=</opt> Value in bytes for RLIMIT_STACK (maximum size of the process stack). Sensible values are heavily system dependent.</p>
+ </option>
+
+ <option>
+ <p><opt>rlimit-nproc=</opt> Value for RLIMIT_NPROC (number of process of user). avahi-daemon forks of a helper process on systems where <manref name="chroot" section="2"/> is available. Therefore this value should not be set below 2.</p>
+ </option>
+
+ </section>
+
+ <section name="Authors">
+ <p>The Avahi Developers <@PACKAGE_BUGREPORT@>; Avahi is
+ available from <url href="@PACKAGE_URL@"/></p>
+ </section>
+
+ <section name="See also">
+ <p>
+ <manref name="avahi-daemon" section="8"/>, <manref name="avahi-dnsconfd" section="8"/>
+ </p>
+ </section>
+
+ <section name="Comments">
+ <p>This man page was written using <manref name="xml2man" section="1"
+ href="http://masqmail.cx/xml2man/"/> by Oliver Kurth.</p>
+ </section>
+
+</manpage>