</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>system.hostname</varname></term>
+ <listitem>
+ <para>Accepts a (transient) hostname to configure during early boot. The static hostname specified
+ in <filename>/etc/hostname</filename>, if configured, takes precedence over this setting.
+ Interpreted by the service manager (PID 1). For details see
+ <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para>
+
+ <xi:include href="version-info.xml" xpointer="v254"/>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term><varname>home.create.*</varname></term>
<listitem>
#include <unistd.h>
#include "alloc-util.h"
+#include "creds-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
return 1;
}
+static int acquire_hostname_from_credential(char **ret) {
+ _cleanup_free_ char *cred = NULL;
+ int r;
+
+ assert(ret);
+
+ r = read_credential_with_decryption("system.hostname", (void **) &cred, /* ret_size= */ NULL);
+ if (r < 0)
+ return log_warning_errno(r, "Failed to read system.hostname credential, ignoring: %m");
+ if (r == 0) /* not found */
+ return -ENXIO;
+
+ if (!hostname_is_valid(cred, VALID_HOSTNAME_TRAILING_DOT)) /* check that the hostname we return is valid */
+ return log_warning_errno(SYNTHETIC_ERRNO(EBADMSG), "Hostname specified in system.hostname credential is invalid, ignoring: %s", cred);
+
+ log_info("Initializing hostname from credential.");
+ *ret = TAKE_PTR(cred);
+ return 0;
+}
+
int read_etc_hostname_stream(FILE *f, char **ret) {
int r;
}
}
+ if (!hn) {
+ r = acquire_hostname_from_credential(&b);
+ if (r >= 0) {
+ hn = b;
+ source = HOSTNAME_TRANSIENT;
+ }
+ }
+
if (!hn) {
_cleanup_free_ char *buf = NULL;