LSARC/2006/455 Avahi and libdaemon
John Fischer
John.Fischer at sun.com
Fri Sep 7 09:28:05 PDT 2007
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
More information about the opensolaris-arc
mailing list