All, Padraig has update the proposal (see attached) and provided the SMF manifest. We believe that these address the issues raised. I have also placed these in the case directory along with the overview diagram.
Thanks, John -------------- next part -------------- A non-text attachment was scrubbed... Name: avahi-bridge-dsd.xml Type: text/xml Size: 2559 bytes Desc: not available URL: <http://mail.opensolaris.org/pipermail/opensolaris-arc/attachments/20070907/d5a284e0/attachment.xml> -------------- next part -------------- 1. Introduction 1.1. Project/Component Working Name: Avahi and libdaemon 1.2. Name of Document Author/Supplier: Padraig O'Briain 1.3. The name of your business unit: JDS Desktop Engineering, Open Source Software, OPG 1.4. Email Aliases: 1.4.1. Responsible Manager: Leo Binchy <leo.binchy at sun.com> 1.4.2. Responsible Engineer: Padraig O'Briain <padraig.briain at sun.com> 1.4.3. Marketing Manager: Jeff Mc Meekin <jeff.mcmeekin at sun.com> 1.4.4. Interest List: desktop-cteam at sun.com nwam-bonjour at sun.com bonjour-iteam at sun.com 2. Project Summary 2.1. Project Description: The Multicast DNS (mDNS) and Service Discovery project introduces DNS server-less link-local IP address resolution for ad-hoc networks and discovery of devices and services. See PSARC/2005/562. That project is based on Apple's implementation, a.k.a Bonjour. An alternative implementation is avahi, see www.avahi.org. Some GNOME components provide support for service registration and discovery using avahi. This project delivers the avahi client API. Instead of delivering the avahi daemon, which on linux and freebsd implements a mDNS stack, we will change the avahi daemon to make calls to the Bonjour API so that it will use the Bonjour server. Thus this project depends on PSARC/2005/562. libdaemon is a lightweight C library that eases the writing of UNIX daemons and is used by the avahi daemon. 4. Technical Description: 4.1. Details: Avahi consists of several parts: libavahi-common: a library containing some functions used by avahi clients and the avahi daemon itself. libavahi-core: A library implement service registration and discovery. libavahi-client: A minimal wrapper around the DBUS API to simplify its usage. It hides the DBUS internals completely. libavahi-glib: An adaptor for connecting avahi-client or avahi-core to a GLIB main loop. avahi-daemon: The avahi daemon makes use of libavahi-core to provide service registration and discovery to clients using the DBUS interface which is an IPC wrapper around the functions provided by avahi-core. We rename this to avahi-daemon-bridge-dsd so that it is clear that we are not delivering the standard avahi daemon. ! We have changed avahi-daemon to implement its functionality by ! making calls to Bonjour. We have done this rather than implement ! Bonjour calls in avahi client to maintain as close to a pure Avahi ! environment as possible. If in the future a new client component ! uses the DBUS interface instead of the avahi client API we will be ! able to ship that component. avahi-browse, avahi-discover, avahi-publish, avahi-resolve: Some command line utilities which use libavahi-client. See http://www.avahi.org/wiki/ArchitecturalOverview, which lists some other parts of avahi which we do not deliver. We make significant changes to avahi daemon and libavahi-core. Instead of implementing a mDNS/DNS-SD stack libavahi-core makes calls to the DNS Service Discovery API provided by Bonjour to register and discover services. As the avahi daemon does not provide service registration and discovery itself those portions related to being a mDNS server are omitted. libdaemon is a lightweight C library that eases the writing of UNIX daemons. It consists of the following parts: * A wrapper around fork() which does the correct daemonization procedure of a process * A wrapper around syslog() for simpler and compatible log output to Syslog or STDERR * An API for writing PID files * An API for serializing UNIX signals into a pipe for usage with select() or poll() * An API for running subprocesses with STDOUT and STDERR redirected to syslog. 4.2. Bug/RFE Number(s): N/A. 4.3. In Scope: The project team will integrate and support versions of Avahi continually throughout its life within the Solaris OS. The project team will mark the interfaces of Avahi as appropriate [detailed below] and work with other project teams to provide contracts of use, until such a stage where the technology can be considered as 'Committed' according to the interface taxonomy rules. 4.4. Out of Scope: Sun does not expect to be involved in the development and direction of avahi or libdaemon. Where possible, we will ship 'as is', with the changes to call Bonjour. Any developer changes will be pushed upstream where appropriate. 4.5. Interfaces: Exported Interfaces SUNWlibdaemon Uncommitted Package name for libdaemon Two packages SUNWlibdaemon and SUNWlibdaemon-devel are delivered. /usr/lib/libdaemon.so Volatile libdaemon C library /usr/lib/pkgconfig/libdaemon.pc pkgconfig file for Volatile libdaemon Volatile libdaemon API /usr/include/libdaemon/daemon.h /usr/include/libdaemon/dexec.h /usr/include/libdaemon/dfork.h /usr/include/libdaemon/dlog.h /usr/include/libdaemon/dnoblock.h /usr/include/libdaemon/dpid.h /usr/include/libdaemon/dsignal.h SUNWavahi-bridge-dsd Uncommitted Package name for avahi. Three packages SUNWavahi-bridge-dsd, SUNWavahi-bridge-dsd-devel and SUNWavahi-bridge-dsd-root are delivered. /etc/dbus-1/system.d/avahi-dbus.conf Configuration file for Volatile avahi DBUS messages. ! /var/run/avahi-daemon-bridge-dsd/pid Project Private PID file for avahi. svc:/system/avahi-bridge-dsd:default Volatile SMF service to start avahi-daemon-bridge-dsd. Volatile Avahi APIs. /usr/include/avahi-client/client.h /usr/include/avahi-client/lookup.h /usr/include/avahi-client/publish.h /usr/include/avahi-common/address.h /usr/include/avahi-common/address.h /usr/include/avahi-common/alternative.h /usr/include/avahi-common/cdecl.h /usr/include/avahi-common/defs.h /usr/include/avahi-common/domain.h /usr/include/avahi-common/error.h /usr/include/avahi-common/gccmacro.h /usr/include/avahi-common/llist.h /usr/include/avahi-common/malloc.h /usr/include/avahi-common/rlist.h /usr/include/avahi-common/simple-watch.h /usr/include/avahi-common/strlst.h /usr/include/avahi-common/thread-watch.h /usr/include/avahi-common/timeval.h /usr/include/avahi-common/watch.h /usr/include/avahi-core/core.h /usr/include/avahi-core/log.h /usr/include/avahi-core/lookup.h /usr/include/avahi-core/publish.h /usr/include/avahi-core/rr.h /usr/include/avahi-glib/glib-malloc.h /usr/include/avahi-glib/glib-watch.h /usr/lib/pkgconfig/avahi-client.pc pkgconfig files for /usr/lib/pkgconfig/avahi-core.pc avahi-core, avahi-client /usr/lib/pkgconfig/avahi-glib.pc and avahi-glib bindings. Volatile /usr/bin/avahi-browse Volatile Command line utilities /usr/bin/avahi-discover /usr/bin/bssh /usr/bin/bvnc (this is a link to /usr/bin/bssh) /usr/share/avahi/interfaces/avahi-discover.glade /usr/share/applications/avahi-discover.desktop /usr/bin/avahi-publish /usr/bin/avahi-resolve /usr/bin/avahi-set-host-name /usr/sbin/avahi-daemon-bridge-dsd Volatile Avahi server daemon. Volatile Avahi libraries /usr/lib/libavahi-client.so.3.2.0 /usr/lib/libavahi-common.so.3.4.2 /usr/lib/libavahi-core.so.4.0.4 /usr/lib/libavahi-glib.so.1.0.1 Volatile Avahi python bindings /usr/lib/python2.4/vendor-packages/avahi/ServiceTypeDatabase.py /usr/lib/python2.4/vendor-packages/avahi/SimpleGladeApp.py /usr/lib/python2.4/vendor-packages/avahi/SimpleGladeApp.pyc /usr/lib/python2.4/vendor-packages/avahi/__init__.py /usr/lib/python2.4/vendor-packages/avahi/__init__.pyc Volatile Avahi DBUS Introspection /usr/share/avahi/introspection/AddressResolver.introspect /usr/share/avahi/introspection/DomainBrowser.introspect /usr/share/avahi/introspection/EntryGroup.introspect /usr/share/avahi/introspection/HostNameResolver.introspect /usr/share/avahi/introspection/RecordBrowser.introspect /usr/share/avahi/introspection/Server.introspect /usr/share/avahi/introspection/ServiceBrowser.introspect /usr/share/avahi/introspection/ServiceResolver.introspect /usr/share/avahi/introspection/ServiceTypeBrowser.introspect Volatile Avahi Service Types database /usr/share/avahi/service-types /usr/share/avahi/service-types.DB.Dir /usr/share/avahi/service-types.db.pag /usr/share/avahi/avahi-service.dtd Volatile Man pages /usr/share/man/man1/avahi-browse.1 /usr/share/man/man1/avahi-daemon-bridge-dsd.1 /usr/share/man/man1/avahi-discover.1 /usr/share/man/man1/avahi-publish.1 /usr/share/man/man1/avahi-resolve.1 /usr/share/man/man1/avahi-set-host-name.1 /usr/share/man/man1/bssh /usr/share/man/man1/bvnc (this is a link to /usr/share/man/man1/bssh) ! Imported Interfaces - libxml Committed PSARC 2001/175 Glib Committed LSARC 2006/462 pkg-config Volatile LSARC 2002/747 Python Volatile PSARC 2005/532 DBUS Volatile LSARC 2006/368 libdns-sd (Bonjour) Committed PSARC 2005/562 4.6. Doc Impact: Documentation will be provided as is standard with the Solaris OS - both in terms of developer references, man pages, and command line help. 4.7. Admin/Config Impact: 4.8. HA Impact: None. 4.9. I18N/L10N Impact: None. 4.10. Packaging & Delivery: This project is built, packaged and delivered as part of the current JDS desktop consolidation. 4.11. Security Impact: The process avahi-daemon-bridge-dsd will run as user daemon. No other known security impact. 4.12. Dependencies: LSARC 2006/462 - GNOME 2.16 LSARC 2002/747 - GNOME 2.0 pkg-config PSARC 2001/175 - libxml LSARC 2006/368 - D-BUS Message Bus System 5. Reference Documents: Avahi Community Website http://www.avahi.org Exisitng ARC cases LSARC 2006/462 - GNOME 2.16 PSARC 2005/562 - Multicast DNS and Service Discovery
