L2 Cache

Behold the power of |!

User Tools

Site Tools



This is an old revision of the document!

mDNS Announcer

mDNS Announcer (Multicast DNS Announcer) is a service (for Solaris) written in python that uses ctypes to call libdns-sd to announce services on the network over mDNS.

It wrote this because OmniOS is missing the Avahi package, I didn't want to spend time compiling Avahi on solaris so I write a simple replacement.

How it works

A zone or solaris host will run the mDNS Announcer Service (network/dns/multicast-announcer).
This service uses network/dns/multicast to register services on the network.

It will read /etc/mdns.conf for services that need to be announced. It will try to guess default like the hostname. If they are wrong you can also specify them in the service definition and those will be used instead. This file should be fairly self explenatory. note: the parser is rather rough so it is possible to that bad configuration could prevent the service from starting!


The installation is quite simple if you run OmniOS.

Simple add the omnios.blackdot.be repository and install the goto package.
You then edit mdns.conf to define services to publish. Then enable both network/dns/multicast and network/dns/multicast-announcer.

# pfexec pkg set-publisher -g http://omnios.blackdot.be -g omnios.blackdot.be # pfexec pkg refresh –full # pfexec pkg install obd/server/dns/multicast-announcer # pfexec vi /opt/obd/etc/mdns.conf # pfexec svcadm enable dns/multicast # pfexec svcadm enable dns/multicast-announcer # pfexec svcs -x (to check for errors)

Currently there are no manual installation instructions, if there is interest in this I will write them up when I have more time. For any questions you can contact me through my website.

mdns.conf format

// Multicast DNS Announcer
// -----------------------------------
// [
// {
// "name": "flux", --- name - defaults to hostname (optional)
// "domain": "local.", --- domain - defaults to local. (optional)
// "host": "flux.example.com", --- set alternative fqdn - MUST be resolvable (optional)
// "type": "_ssh._tcp", --- set service type (required)
// "port": 22, --- set port (required)
// "txtRecord": {"model": "RackMac"}, --- set text record (optional)
// "interface": "e1000g0" --- set binding interface (optional)
// }
// ]
                "type": "_device-info._tcp",
                "port": 548,
                "txtRecord": {"model": "RackMac"}
                "type": "_ssh._tcp",
                "port": 22
                "type": "_smb._tcp",
                "port": 445
projects/solaris/mdns.1374499624.txt.gz · Last modified: 2014/10/09 22:02 (external edit)