diff --git a/src/knot/conf/cf-parse.y b/src/knot/conf/cf-parse.y
index 894d884d48c7a8b804aac11cce39f817c0c7247a..135a86acfc36ad2e5ac56495f0e47eadb53e0455 100644
--- a/src/knot/conf/cf-parse.y
+++ b/src/knot/conf/cf-parse.y
@@ -420,18 +420,29 @@ static void opt_replace(char **opt, char *new_opt, bool val)
 	}
 }
 
+static char *get_hostname(void *scanner)
+{
+	char *fqdn = sockaddr_hostname();
+	if (!fqdn) {
+		cf_warning(scanner, "cannot retrieve host FQDN");
+		return NULL;
+	}
+
+	return fqdn;
+}
+
 /*! \brief Generate automatic defaults for server identity, version and NSID. */
-static void ident_auto(int tok, conf_t *conf, bool val)
+static void ident_auto(void *scanner, int tok, conf_t *conf, bool val)
 {
 	switch(tok) {
 	case SVERSION:
 		opt_replace(&conf->version, strdup("Knot DNS " PACKAGE_VERSION), val);
 		break;
 	case IDENTITY:
-		opt_replace(&conf->identity, sockaddr_hostname(), val);
+		opt_replace(&conf->identity, get_hostname(scanner), val);
 		break;
 	case NSID:
-		opt_replace(&conf->nsid, sockaddr_hostname(), val);
+		opt_replace(&conf->nsid, get_hostname(scanner), val);
 		if (conf->nsid) {
 			conf->nsid_len = strlen(conf->nsid);
 		}
@@ -570,9 +581,9 @@ interfaces:
 system:
    SYSTEM '{'
  | system SVERSION TEXT ';' { new_config->version = $3.t; }
- | system SVERSION BOOL ';' { ident_auto(SVERSION, new_config, $3.i); }
+ | system SVERSION BOOL ';' { ident_auto(scanner, SVERSION, new_config, $3.i); }
  | system IDENTITY TEXT ';' { new_config->identity = $3.t; }
- | system IDENTITY BOOL ';' { ident_auto(IDENTITY, new_config, $3.i); }
+ | system IDENTITY BOOL ';' { ident_auto(scanner, IDENTITY, new_config, $3.i); }
  | system HOSTNAME TEXT ';' {
      cf_warning(scanner, "option 'system.hostname' is deprecated, "
                          "use 'system.identity' instead");
@@ -580,7 +591,7 @@ system:
  }
  | system NSID HEXSTR ';' { new_config->nsid = $3.t; new_config->nsid_len = $3.l; }
  | system NSID TEXT ';' { new_config->nsid = $3.t; new_config->nsid_len = strlen(new_config->nsid); }
- | system NSID BOOL ';' { ident_auto(NSID, new_config, $3.i); }
+ | system NSID BOOL ';' { ident_auto(scanner, NSID, new_config, $3.i); }
  | system MAX_UDP_PAYLOAD NUM ';' {
      SET_NUM(new_config->max_udp_payload, $3.i, KNOT_EDNS_MIN_UDP_PAYLOAD,
              KNOT_EDNS_MAX_UDP_PAYLOAD, "max-udp-payload");