summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac16
-rw-r--r--src/nss.c12
2 files changed, 26 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 90c10d9..81db7d1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -156,5 +156,21 @@ fi
AM_CONDITIONAL([ENABLE_LEGACY], [test "x$ENABLE_LEGACY" = "xyes"])
+### Honour search domains from /etc/resolv.conf?
+
+AC_ARG_ENABLE(search-domains,
+ AC_HELP_STRING([--enable-search-domains],[Honour search domains from /etc/resolv.conf (default=no)]),
+ [case "${enableval}" in
+ yes) HONOUR_SEARCH_DOMAINS=yes ;;
+ no) HONOUR_SEARCH_DOMAINS=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-search-domains) ;;
+ esac],
+ [HONOUR_SEARCH_DOMAINS=no]) dnl Default value
+
+if test "x$HONOUR_SEARCH_DOMAINS" = "xyes" ; then
+ AC_DEFINE(HONOUR_SEARCH_DOMAINS, [1], [Honour search domains from /etc/resolv.conf])
+fi
+
+
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile doc/README.html ])
AC_OUTPUT
diff --git a/src/nss.c b/src/nss.c
index 5476e6f..28c3ac4 100644
--- a/src/nss.c
+++ b/src/nss.c
@@ -172,6 +172,8 @@ static int verify_name_allowed(const char *name) {
return ends_with(name, ".local") || ends_with(name, ".local.");
}
+#ifdef HONOUR_SEARCH_DOMAINS
+
static char **alloc_domains(unsigned ndomains) {
char **domains;
@@ -276,6 +278,8 @@ static char** get_search_domains(void) {
return domains;
}
+#endif
+
enum nss_status _nss_mdns_gethostbyname2_r(
const char *name,
int af,
@@ -370,6 +374,7 @@ enum nss_status _nss_mdns_gethostbyname2_r(
status = NSS_STATUS_NOTFOUND;
}
+#ifdef HONOUR_SEARCH_DOMAINS
if (u.count == 0 && avahi_works && !ends_with(name, ".")) {
char **domains;
@@ -416,7 +421,8 @@ enum nss_status _nss_mdns_gethostbyname2_r(
free_domains(domains);
}
}
-#endif
+#endif /* HONOUR_SEARCH_DOMAINS */
+#endif /* ENABLE_AVAHI */
#if defined(ENABLE_LEGACY) && defined(ENABLE_AVAHI)
if (u.count == 0 && !avahi_works)
@@ -438,6 +444,7 @@ enum nss_status _nss_mdns_gethostbyname2_r(
status = NSS_STATUS_NOTFOUND;
}
+#ifdef HONOUR_SEARCH_DOMAINS
if (u.count == 0 && !ends_with(name, ".")) {
char **domains;
@@ -476,8 +483,9 @@ enum nss_status _nss_mdns_gethostbyname2_r(
free_domains(domains);
}
}
+#endif /* HONOUR_SEARCH_DOMAINS */
}
-#endif
+#endif /* ENABLE_LEGACY */
if (u.count == 0) {
*errnop = ETIMEDOUT;