diff --git a/board/common/rootfs/usr/libexec/infix/hostname b/board/common/rootfs/usr/libexec/infix/hostname index bfd1952b..c22dff44 100755 --- a/board/common/rootfs/usr/libexec/infix/hostname +++ b/board/common/rootfs/usr/libexec/infix/hostname @@ -62,8 +62,8 @@ if ! runlevel >/dev/null 2>&1; then fi initctl -bq status lldpd && lldpcli configure system hostname "$new_hostname" 2>/dev/null -initctl -bq status mdns && avahi-set-host-name "$new_hostname" 2>/dev/null -initctl -bq touch netbrowse 2>/dev/null +initctl -bq touch mdns-alias 2>/dev/null +initctl -bq touch netbrowse 2>/dev/null # If called from dhcp script we need to reload to activate new name in syslogd # Otherwise we're called from confd, which does the reload when all is done. diff --git a/package/mdns-alias/mdns-alias.svc b/package/mdns-alias/mdns-alias.svc index dfe65d8f..298317cb 100644 --- a/package/mdns-alias/mdns-alias.svc +++ b/package/mdns-alias/mdns-alias.svc @@ -1,2 +1,5 @@ -service env:-/etc/default/mdns-alias log:prio:daemon.debug,tag:mdns \ - [2345] mdns-alias $MDNS_ALIAS_ARGS -- mDNS alias advertiser +# Avahi advertises the system default hostname, this service advertises +# /etc/hostname (-H) and, optionally, network.local as CNAMEs. Changes +# to /etc/default/mdns-alias will cause Finit to restart not reload. +service env:-/etc/default/mdns-alias \ + [2345] mdns-alias -H $MDNS_ALIAS_ARGS -- diff --git a/src/confd/bin/gen-service b/src/confd/bin/gen-service index 66d50ed2..6c233a08 100755 --- a/src/confd/bin/gen-service +++ b/src/confd/bin/gen-service @@ -33,7 +33,6 @@ cat <"$file" $type $port - $host.local vv=1 vendor=$(jq -r .vendor /run/system.json) product=$(jq -r '."product-name"' /run/system.json) diff --git a/src/confd/src/services.c b/src/confd/src/services.c index 97e12699..2ad72dfe 100644 --- a/src/confd/src/services.c +++ b/src/confd/src/services.c @@ -206,6 +206,7 @@ static void fput_list(FILE *fp, struct lyd_node *cfg, const char *list, const ch static void mdns_conf(struct lyd_node *cfg) { + const char *hostname = fgetkey("/etc/os-release", "DEFAULT_HOSTNAME"); struct lyd_node *ctx; FILE *fp; @@ -217,9 +218,10 @@ static void mdns_conf(struct lyd_node *cfg) fprintf(fp, "# Generated by Infix confd\n" "[server]\n" + "host-name=%s\n" "domain-name=%s\n" "use-ipv4=yes\n" - "use-ipv6=yes\n", lydx_get_cattr(cfg, "domain")); + "use-ipv6=yes\n", hostname, lydx_get_cattr(cfg, "domain")); ctx = lydx_get_descendant(lyd_child(cfg), "interfaces", NULL); if (ctx) { @@ -254,23 +256,17 @@ static void mdns_cname(sr_session_ctx_t *session) if (ena) { int www = srx_enabled(session, "/infix-services:web/netbrowse/enabled"); - const char *hostname = fgetkey("/etc/os-release", "DEFAULT_HOSTNAME"); + FILE *fp; - if (hostname || www) { - FILE *fp; - - fp = fopen("/etc/default/mdns-alias", "w"); - if (fp) { - fprintf(fp, "MDNS_ALIAS_ARGS=\"%s%s %s\"\n", - hostname ?: "", hostname ? ".local" : "", - www ? "network.local" : ""); - fclose(fp); - } else { - ERRNO("failed updating mDNS aliases"); - ena = 0; - } - } else - ena = 0; /* nothing to advertise */ + fp = fopen("/etc/default/mdns-alias", "w"); + if (fp) { + fprintf(fp, "MDNS_ALIAS_ARGS=\"%s\"\n", + www ? "network.local" : ""); + fclose(fp); + } else { + ERRNO("failed updating mDNS aliases"); + ena = 0; + } } svc_enadis(ena, none, "mdns-alias");