From: Steve French on
Patches 1 - 3 of this series now in cifs-2.6.git

On Wed, Aug 11, 2010 at 3:37 AM, David Howells <dhowells(a)redhat.com> wrote:
> From: Bryan Schumaker <bjschuma(a)netapp.com>
>
> Use the kernel DNS resolver to translate hostnames to IP addresses. �Create a
> new config option to choose between the legacy DNS resolver and the new
> resolver.
>
> Signed-off-by: Bryan Schumaker <bjschuma(a)netapp.com>
> Acked-by: Trond Myklebust <Trond.Myklebust(a)netapp.com>
> Signed-off-by: David Howells <dhowells(a)redhat.com>
> ---
>
> �fs/nfs/Kconfig � � � | � 16 ++++++++++++++++
> �fs/nfs/dns_resolve.c | � 24 ++++++++++++++++++++++++
> �fs/nfs/dns_resolve.h | � 12 ++++++++++++
> �3 files changed, 52 insertions(+), 0 deletions(-)
>
> diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
> index cc1bb33..c5bbdca 100644
> --- a/fs/nfs/Kconfig
> +++ b/fs/nfs/Kconfig
> @@ -100,3 +100,19 @@ config NFS_FSCACHE
> � � � �help
> � � � � �Say Y here if you want NFS data to be cached locally on disc through
> � � � � �the general filesystem cache manager
> +
> +config NFS_USE_LEGACY_DNS
> + � � � bool "Use the legacy NFS DNS resolver"
> + � � � depends on NFS_V4
> + � � � help
> + � � � � The kernel now provides a method for translating a host name into an
> + � � � � IP address. �Select Y here if you would rather use your own DNS
> + � � � � resolver script.
> +
> + � � � � If unsure, say N
> +
> +config NFS_USE_KERNEL_DNS
> + � � � bool
> + � � � depends on NFS_V4 && !NFS_USE_LEGACY_DNS
> + � � � select DNS_RESOLVER
> + � � � default y
> diff --git a/fs/nfs/dns_resolve.c b/fs/nfs/dns_resolve.c
> index 76fd235..dba50a5 100644
> --- a/fs/nfs/dns_resolve.c
> +++ b/fs/nfs/dns_resolve.c
> @@ -6,6 +6,29 @@
> �* Resolves DNS hostnames into valid ip addresses
> �*/
>
> +#ifdef CONFIG_NFS_USE_KERNEL_DNS
> +
> +#include <linux/sunrpc/clnt.h>
> +#include <linux/dns_resolver.h>
> +
> +ssize_t nfs_dns_resolve_name(char *name, size_t namelen,
> + � � � � � � � struct sockaddr *sa, size_t salen)
> +{
> + � � � ssize_t ret;
> + � � � char *ip_addr = NULL;
> + � � � int ip_len;
> +
> + � � � ip_len = dns_query(NULL, name, namelen, NULL, &ip_addr, NULL);
> + � � � if (ip_len > 0)
> + � � � � � � � ret = rpc_pton(ip_addr, ip_len, sa, salen);
> + � � � else
> + � � � � � � � ret = -ESRCH;
> + � � � kfree(ip_addr);
> + � � � return ret;
> +}
> +
> +#else
> +
> �#include <linux/hash.h>
> �#include <linux/string.h>
> �#include <linux/kmod.h>
> @@ -346,3 +369,4 @@ void nfs_dns_resolver_destroy(void)
> � � � �nfs_cache_unregister(&nfs_dns_resolve);
> �}
>
> +#endif
> diff --git a/fs/nfs/dns_resolve.h b/fs/nfs/dns_resolve.h
> index a3f0938..199bb55 100644
> --- a/fs/nfs/dns_resolve.h
> +++ b/fs/nfs/dns_resolve.h
> @@ -6,8 +6,20 @@
>
> �#define NFS_DNS_HOSTNAME_MAXLEN � � � �(128)
>
> +
> +#ifdef CONFIG_NFS_USE_KERNEL_DNS
> +static inline int nfs_dns_resolver_init(void)
> +{
> + � � � return 0;
> +}
> +
> +static inline void nfs_dns_resolver_destroy(void)
> +{}
> +#else
> �extern int nfs_dns_resolver_init(void);
> �extern void nfs_dns_resolver_destroy(void);
> +#endif
> +
> �extern ssize_t nfs_dns_resolve_name(char *name, size_t namelen,
> � � � � � � � �struct sockaddr *sa, size_t salen);
>
>
>



--
Thanks,

Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/