]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
hostname-util: introduce new is_gateway_hostname() call
authorLennart Poettering <lennart@poettering.net>
Mon, 17 Aug 2015 21:35:09 +0000 (23:35 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 21 Aug 2015 10:07:13 +0000 (12:07 +0200)
This moves is_gateway() from nss-myhostname into the basic APIs, and
makes it more like is_localhost(). Also, we rename it to
is_gateway_hostname() to make it more expressive.

Sharing this function in src/basic/ allows us to reuse the function for
routing name requests in resolved (in a later commit).

src/basic/hostname-util.c
src/basic/hostname-util.h
src/nss-myhostname/nss-myhostname.c

index d901a5e82bcda5eab0830d5cb8517e88608d5f8b..dc5434fcd1205da762c3c51acece82904dc3e35b 100644 (file)
@@ -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] = {};
 
index 6f2b5b66ff0bd8eb8c62f14dcd35ec110de1ec20..a1ca94980d7f5316869d68933bb83d7766971345 100644 (file)
@@ -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);
 
index 69069cc75d2ede9191aa7571e69bfe6c5036b979..0dca8914479b1e7532e2db608c133ec55a90863e 100644 (file)
 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) {