#include "errno-util.h"
#include "escape.h"
#include "event-util.h"
+#include "exit-status.h"
#include "fd-util.h"
#include "format-ifname.h"
#include "format-table.h"
* https://docs.hetzner.cloud/reference/cloud#description/server-metadata
*
* Some notes:
- * - IMDS service are heavily rate limited, and hence we want to centralize requests in one place and cache
+ * - IMDS service are heavily rate-limited, and hence we want to centralize requests in one place and cache
* - In order to isolate IMDS access this expects that traffic to the IMDS address 169.254.169.254 is
* generally prohibited (via a prohibit route), but our service uses fwmark 0x7FFF0815, which (via source
* routing) can bypass this route.
/* Process the request when invoked via the command line (i.e. not via Varlink) */
- r = imds_configured(LOG_ERR);
+ r = imds_configured(LOG_INFO);
+ if (r == -EOPNOTSUPP)
+ return EXIT_NOTCONFIGURED;
if (r < 0)
return r;
ExecStart={{LIBEXECDIR}}/systemd-imdsd --setup-network
Type=oneshot
RemainAfterExit=yes
+
+# The tool returns EXIT_NOTCONFIGURED if the configuration required for basic
+# operation is not found. Do not treat this as error, because the service can
+# be started on generic systems that do not have complete IMDS support.
+SuccessExitStatus=NOTCONFIGURED
Type=oneshot
RemainAfterExit=yes
ExecStart={{LIBEXECDIR}}/systemd-imds --import
+
+# The tool returns EXIT_NOTCONFIGURED if the configuration required for basic
+# operation is not found. Do not treat this as error, because the service can
+# be started on generic systems that do not have complete IMDS support.
+SuccessExitStatus=NOTCONFIGURED