From: Zbigniew Jędrzejewski-Szmek Date: Fri, 19 Feb 2021 16:48:20 +0000 (+0100) Subject: Use the DEFAULT_HOSTNAME field from os-release X-Git-Tag: v248-rc1~8^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7637751c4d3dbdaf9e5e13801d912389c8b7f4d;p=thirdparty%2Fsystemd.git Use the DEFAULT_HOSTNAME field from os-release This provides a fairly comprehensible fix for https://bugzilla.redhat.com/show_bug.cgi?id=1893417. This adds yet-another level of configuration: - /etc/hostname - transient hostname - $SYSTEMD_DEFAULT_HOSTNAME - DEFAULT_HOSTNAME is os-release - -Dfallback-hostname= - "linux" It's a lot of layers, but each has it's own justification. --- diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 5109605e0c5..29d69910d24 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -14,6 +14,8 @@ #include "strv.h" char* get_default_hostname(void) { + int r; + const char *e = secure_getenv("SYSTEMD_DEFAULT_HOSTNAME"); if (e) { if (hostname_is_valid(e, 0)) @@ -21,6 +23,16 @@ char* get_default_hostname(void) { log_debug("Invalid hostname in $SYSTEMD_DEFAULT_HOSTNAME, ignoring: %s", e); } + _cleanup_free_ char *f = NULL; + r = parse_os_release(NULL, "DEFAULT_HOSTNAME", &f); + if (r < 0) + log_debug_errno(r, "Failed to parse os-release, ignoring: %m"); + else if (f) { + if (hostname_is_valid(f, 0)) + return TAKE_PTR(f); + log_debug("Invalid hostname in os-release, ignoring: %s", f); + } + return strdup(FALLBACK_HOSTNAME); }