From 5f5834dc1e45f75520921ecdfa4e572fe27c1c1c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 1 Jan 2007 16:45:49 +0000 Subject: 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 --- configure.ac | 16 ++++++++++++++++ src/nss.c | 12 ++++++++++-- 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; -- cgit