config BR2_PACKAGE_AVAHI
	bool "avahi"
	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
	select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT_IF_LOCALE
	help
	  Avahi is a system which facilitates service
	  discovery on a local network.

	  http://www.avahi.org/

config BR2_PACKAGE_AVAHI_AUTOIPD
	bool "IPv4LL network address configuration daemon"
	default y
	depends on BR2_PACKAGE_AVAHI
	select BR2_PACKAGE_LIBDAEMON
	help
	  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.

config BR2_PACKAGE_AVAHI_DAEMON
	bool "mDNS/DNS-SD daemon"
	depends on BR2_PACKAGE_AVAHI
	select BR2_PACKAGE_LIBDAEMON
	select BR2_PACKAGE_EXPAT
	help
	  The Avahi mDNS/DNS-SD daemon implementing Apple's ZeroConf
	  architecture (also known as "Rendezvous" or "Bonjour").
	  The daemon registers local IP addresses and services using
	  mDNS/DNS-SD.

config BR2_PACKAGE_AVAHI_COMPAT_LIBDNS_SD
        bool "Enable libdns_sd compatibility mode"
        default n
        depends on BR2_PACKAGE_AVAHI
        help
          Enables the Avahi compatibility implementation of the
          libdns_sd library.  The  libdns_sd library functions provide
          facilities for applications to advertise and discover services
          that use the DNS protocol.
