avahi.service(5)

🌸 NAME 🌸

avahi.service β€” the avahi-daemon static service file, bestie. That's the whole assignment. It lives in the File Formats Manual (section 5), so like, it's giving "config file lore" energy and honestly? Iconic. πŸ’–


✨ SYNOPSIS ✨

/etc/avahi/services/*.service

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so /etc/avahi/services/*.service? Those files are XML fragments containing static DNS-SD service data. No cap.

And here's the part that's actually kind of slay: every single service file can contain multiple service definitions, and they all share the same name. The way that's useful is for publishing service data for services that implement multiple protocols β€” i.e. a printer implementing _ipp._tcp and _printer._tcp. πŸ–¨οΈβœ¨


πŸŽ€ XML TAGS πŸŽ€

  • <service-group> β€” the document tag of avahi service files, the big one, the main character. It should contain one <name> and one or more <service> elements. πŸ‘‘
  • <name replace-wildcards="yes|no"> β€” the service name, periodt. If replace-wildcards is "yes", then any occurrence of the string "%h" gets replaced by the local host name. This can be used for service names like "Remote Terminal on %h". If replace-wildcards is not specified, it defaults to "no". 🫢
  • <service protocol="ipv4|ipv6|any"> β€” contains the service information for exactly one service type. It should contain one <type> and one <port> element. Optionally it may also contain one <domain-name>, one <host-name>, any number of <subtype> and any number of <txt-record> elements. The protocol attribute specifies the protocol to advertise the service on β€” and if any is used (which is the default, btw), the service will be advertised on both IPv4 and IPv6. Both, bestie. πŸ’…
  • <type> β€” contains the DNS-SD service type for this service. e.g. "_http._tcp". 🌐
  • <subtype> β€” contains an additional DNS-SD service subtype for this service. e.g. "_anon._sub._ftp._tcp". It's giving "and also this, as a treat". 🎁
  • <domain-name> β€” the domain name this service should be registered in. If it's omitted, it defaults to the default domain of the avahi daemon. (probably .local) 🏠
  • <host-name> β€” the host name of the host that provides this service. This should be a host that is resolvable by multicast or unicast DNS. Please note πŸ‘€ that you need to specify a fully-qualified domain name (FQDN) here, i.e. .local is not appended implicitly! The host name doesn't need to be part of the domain specified in <domain-name>. See avahi.hosts(5) for more information on how to publish additional host name mappings. πŸ”
  • <port> β€” the IP port number the service listens on. πŸ”’
  • <txt-record value-format="text|binary-hex|binary-base64"> β€” DNS-SD TXT record data, and okay this one has LAYERS so let's go:
    • If value-format is "text", the value of the TXT record is taken verbatim.
    • If value-format is "binary-hex" then the value of the TXT record is decoded by taking pairs of characters after the "=" char and interpreting them as the textual representation of the two-digit hexadecimal number. Both uppercase and lowercase hexadecimal digits are allowed. The 0x or 0X prefix is not allowed. This requires the length of the value to be even.
    • If value-format is "binary-base64" then the value of the TXT record is decoded with a base64 decoder. The character set used is A-Za-z0-9+/. This requires the length of the value to be a multiple of 4, with "=" as padding at the end.
    • If value-format is not specified, it defaults to "text". 🧚

Examples β€” and yes, all the values are decoded to the string "value" without quotes:

<txt-record>key=value</txt-record>
<txt-record value-format="text">key=value</txt-record>
<txt-record value-format="binary-hex">key=76616c7565</txt-record>
<txt-record value-format="binary-base64">key=dmFsdWU=</txt-record>

πŸ’œ AUTHORS πŸ’œ

The Avahi Developers <avahi (at) lists (dot) freedesktop (dot) org>; Avahi is available from http://avahi.org/ 🫑


🌈 SEE ALSO 🌈

Go read them, bestie, they're the supporting cast. πŸ“š


πŸ“ COMMENTS πŸ“

This man page was written using xml2man(1) by Oliver Kurth. Respect the craft. πŸŽ€


Okay that's the whole page, mwah. Just so you know where this came from: it's filed in the Manuals section, sitting in the User corner of the manual, and the whole thing is avahi.service(5). Now go publish some services. Slay. πŸ‘‘πŸ’–πŸ¦‹

πŸ“¦ where this page comes from