summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-01-01 16:45:49 +0000
committerLennart Poettering <lennart@poettering.net>2007-01-01 16:45:49 +0000
commit5f5834dc1e45f75520921ecdfa4e572fe27c1c1c (patch)
tree8a3b3e7ba22f7c438313c243e9fd33fc8af7e025
parent35be6383e3d811be2674083add0ec6b92086af27 (diff)
add new compile option HONOUR_SEARCH_DOMAINS: parse search domain list in /etc/resolv.conf only optionally.
git-svn-id: file:///home/lennart/svn/public/nss-mdns/trunk@105 0ee8848e-81ea-0310-a63a-f631d1a40d77
-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;