endif
conf.set_quoted('FALLBACK_HOSTNAME', fallback_hostname)
-conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
-gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
-
default_hierarchy = get_option('default-hierarchy')
conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
description : 'default cgroup hierarchy as string')
'nobody user name: @0@'.format(nobody_user),
'nobody group name: @0@'.format(nobody_group),
'fallback hostname: @0@'.format(get_option('fallback-hostname')),
- 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
'default DNSSEC mode: @0@'.format(default_dnssec),
'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
option('fallback-hostname', type : 'string', value : 'localhost',
description : 'the hostname used if none configured')
-option('compat-gateway-hostname', type : 'boolean', value : 'false',
- description : 'allow "gateway" as the symbolic name for default gateway')
option('default-hierarchy', type : 'combo',
choices : ['legacy', 'hybrid', 'unified'], value : 'unified',
description : 'default cgroup hierarchy')
endswith_no_case(hostname, ".localhost.localdomain.");
}
-bool is_gateway_hostname(const char *hostname) {
- assert(hostname);
-
- /* This tries to identify the valid syntaxes for the our
- * synthetic "gateway" host. */
-
- return
- strcaseeq(hostname, "_gateway") || strcaseeq(hostname, "_gateway.")
-#if ENABLE_COMPAT_GATEWAY_HOSTNAME
- || strcaseeq(hostname, "gateway") || strcaseeq(hostname, "gateway.")
-#endif
- ;
-}
-
int sethostname_idempotent(const char *s) {
char buf[HOST_NAME_MAX + 1] = {};
#include <stdio.h>
#include "macro.h"
+#include "strv.h"
bool hostname_is_set(void);
#define machine_name_is_valid(s) hostname_is_valid(s, false)
bool is_localhost(const char *hostname);
-bool is_gateway_hostname(const char *hostname);
+
+static inline bool is_gateway_hostname(const char *hostname) {
+ /* This tries to identify the valid syntaxes for the our synthetic "gateway" host. */
+ return STRCASE_IN_SET(hostname, "_gateway", "_gateway.");
+}
int sethostname_idempotent(const char *s);
if (dns_name_endswith(domain, "invalid") > 0)
return DNS_SCOPE_NO;
- /* Never go to network for the _gateway domain, it's something special, synthesized locally. Note
- * that we don't use is_gateway_hostname() here, since that has support for the legacy "gateway"
- * hostname (without the prefix underscore), which we don't want to filter on all protocols. i.e. we
- * don't want to filter "gateway" on classic DNS, since there might very well be such a host inside
- * some search domain, and we shouldn't block that. We do filter it in LLMNR however (and on mDNS by
- * side-effect, since it's a single-label name which mDNS doesn't accept anyway). */
- if (dns_name_equal(domain, "_gateway") > 0)
+ /* Never go to network for the _gateway domain, it's something special, synthesized locally. */
+ if (is_gateway_hostname(domain))
return DNS_SCOPE_NO;
switch (s->protocol) {