<?xml version="1.0"?><!--*-nxml-*-->
<!DOCTYPE manpage SYSTEM "xmltoman.dtd">
<?xml-stylesheet type="text/xsl" href="xmltoman.xsl" ?>

<!--
  This file is part of avahi.

  avahi is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 2.1 of the
  License, or (at your option) any later version.

  avahi is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
  Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with avahi; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  USA.
-->

  <manpage name="avahi-autoipd" section="8" desc="IPv4LL network address configuration daemon">

	<synopsis>
      <cmd>avahi-autoipd [<arg>options</arg>] <arg>interface</arg></cmd>
      <cmd>avahi-autoipd <opt>--kill</opt> <arg>interface</arg></cmd>
      <cmd>avahi-autoipd <opt>--refresh</opt> <arg>interface</arg></cmd>
      <cmd>avahi-autoipd <opt>--check</opt> <arg>interface</arg></cmd>
	</synopsis>

    <description>
      <p>avahi-autoipd implements IPv4LL, "Dynamic Configuration of
      IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for
      automatic IP address configuration from the link-local
      169.254.0.0/16 range without the need for a central server. It
      is primarily intended to be used in ad-hoc networks which lack a
      DHCP server.</p>

      <p>IPv4LL is part of the Zeroconf stack.</p>

      <p>avahi-autoipd can be used as stand-alone address allocator
      or as plugin for a DHCP client such as ISC's dhclient, where it
      can be used as fallback solution if no DHCP server is found.</p>

      <p>To allow communication between hosts that have only an IPv4LL
      address assigned and hosts that only have a routable IP address
      assigned you may add the following routes to both network
      configurations:</p>

      <p><opt>route add -net 169.254.0.0 netmask 255.255.0.0 dev eth0 metric 99</opt></p>
      <p><opt>route add default dev eth0 metric 99</opt></p>

      <p>See http://developer.apple.com/qa/qa2004/qa1357.html for more information.</p>
	</description>

	<options>

	  <option>
		<p><opt>-D | --daemonize</opt></p>
		<optdesc><p>Daemonize after startup. Implies <opt>--syslog</opt>.</p></optdesc>
	  </option>

	  <option>
		<p><opt>-k | --kill</opt></p>
		<optdesc><p>Kill an already running avahi-autoipd on the specified network interface. (Equivalent to sending a SIGTERM)</p></optdesc>
	  </option>

	  <option>
		<p><opt>-r | --refresh</opt></p>
		<optdesc><p>Tell an already running avahi-autoipd to re-announce the acquired IP address on the specified network interface. (Equivalent to sending a SIGHUP)</p></optdesc>
	  </option>

	  <option>
		<p><opt>-c | --check</opt></p>
		<optdesc><p>Return 0 as return code if avahi-autoipd is already running for the specified network interface.</p></optdesc>
	  </option>

      <option>
        <p><opt>-s | --syslog</opt></p>
        <optdesc><p>Log to syslog instead of STDERR. Implied by <opt>--daemonize</opt>.</p></optdesc>
      </option>

      <option>
        <p><opt>--debug</opt></p>
        <optdesc><p>Enable verbose mode.</p></optdesc>
      </option>

      <option>
        <p><opt>--no-drop-root</opt></p>
        <optdesc><p>Don't drop root privileges after startup. We recommend not to use this option.</p></optdesc>
      </option>

      <option>
        <p><opt>--no-chroot</opt></p>
        <optdesc><p>Don't <manref section="2" name="chroot"/> the daemon. This option is only available when compiled with chroot() support.</p></optdesc>
      </option>

      <option>
        <p><opt>-S | --start=</opt></p>
        <optdesc><p>Try to acquire the specified IP address, which must be from the IPv4LL range 169.254.0.0/16.</p></optdesc>
      </option>

      <option>
        <p><opt>-w | --wait</opt></p>
        <optdesc><p>Wait until a IP address has been successfully acquired before detaching. Only valid in combination with <opt>--daemonize</opt>.</p></optdesc>
      </option>

      <option>
        <p><opt>--force-bind</opt></p>
        <optdesc><p>Acquire an IPv4LL address, even if a routable address has been configured on the interface.</p></optdesc>
      </option>

      <option>
        <p><opt>--no-proc-title</opt></p>
        <optdesc><p>Don't change the process name while
        running. Unless this option is specified avahi-autoipd will
        reflect its current state and the IP address in the process
        title.</p></optdesc>
      </option>

	  <option>
		<p><opt>-h | --help</opt></p>
		<optdesc><p>Show help.</p></optdesc>
	  </option>

	  <option>
		<p><opt>-v | --version</opt></p>
		<optdesc><p>Show version information.</p></optdesc>
	  </option>

	</options>

    <section name="Files">

      <p><file>@pkgsysconfdir@/avahi-autoipd.action</file>: the script to run when an IP address as been acquired or is lost.</p>

    </section>

    <section name="Signals">
      <p><arg>SIGINT, SIGTERM</arg>: avahi-autoipd will shutdown. (Same as <opt>--kill</opt>)</p>
      <p><arg>SIGHUP</arg>: avahi-autoipd will re-announce the acquired IP address. (Same as <opt>--refresh</opt>)</p>
    </section>

	<section name="Authors">
	  <p>The Avahi Developers &lt;@PACKAGE_BUGREPORT@&gt;; Avahi is
	  available from <url href="@PACKAGE_URL@"/></p>
	</section>

	<section name="See also">
	  <p>
        <manref name="autoipd.action" section="8"/>, <manref name="dhclient" section="8"/>
	  </p>

      <p>http://avahi.org/wiki/AvahiAutoipd documents how avahi-autoipd is best packaged and integrated into distributions.</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>
