diff options
-rw-r--r-- | src/basic/hostname-util.c | 11 | ||||
-rw-r--r-- | src/basic/hostname-util.h | 1 | ||||
-rw-r--r-- | src/nss-myhostname/nss-myhostname.c | 11 |
3 files changed, 14 insertions, 9 deletions
diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index d901a5e82b..dc5434fcd1 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -151,6 +151,17 @@ bool is_localhost(const char *hostname) { endswith_no_case(hostname, ".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."); +} + int sethostname_idempotent(const char *s) { char buf[HOST_NAME_MAX + 1] = {}; diff --git a/src/basic/hostname-util.h b/src/basic/hostname-util.h index 6f2b5b66ff..a1ca94980d 100644 --- a/src/basic/hostname-util.h +++ b/src/basic/hostname-util.h @@ -33,6 +33,7 @@ bool hostname_is_valid(const char *s, bool relax) _pure_; char* hostname_cleanup(char *s); bool is_localhost(const char *hostname); +bool is_gateway_hostname(const char *hostname); int sethostname_idempotent(const char *s); diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 69069cc75d..0dca891447 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -43,13 +43,6 @@ NSS_GETHOSTBYNAME_PROTOTYPES(myhostname); NSS_GETHOSTBYADDR_PROTOTYPES(myhostname); -static bool is_gateway(const char *hostname) { - assert(hostname); - - return streq(hostname, "gateway") || - streq(hostname, "gateway."); -} - enum nss_status _nss_myhostname_gethostbyname4_r( const char *name, struct gaih_addrtuple **pat, @@ -81,7 +74,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( canonical = "localhost"; local_address_ipv4 = htonl(INADDR_LOOPBACK); - } else if (is_gateway(name)) { + } else if (is_gateway_hostname(name)) { n_addresses = local_gateways(NULL, 0, AF_UNSPEC, &addresses); if (n_addresses <= 0) { @@ -351,7 +344,7 @@ enum nss_status _nss_myhostname_gethostbyname3_r( canonical = "localhost"; local_address_ipv4 = htonl(INADDR_LOOPBACK); - } else if (is_gateway(name)) { + } else if (is_gateway_hostname(name)) { n_addresses = local_gateways(NULL, 0, af, &addresses); if (n_addresses <= 0) { |