From: NeilBrown Date: Tue, 1 May 2012 19:20:31 +0000 (-0400) Subject: auth_authenticate_newcache: prefer non-V4ROOT export over V4ROOT exports X-Git-Tag: nfs-utils-1-2-6-rc7~10 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=3d7faa0249332e23a2dc2e3e78020ed6bc66036a;p=nfs-utils.git auth_authenticate_newcache: prefer non-V4ROOT export over V4ROOT exports Currently auth_authenticate_internal finds an export and if it is a V4ROOT export, it reports that there is no match. Unlike lookup_export() it doesn't keep looking for an acceptable export. So remove the test from auth_authenticate_internal(), and add it to auth_authenticate_newcache(), where the search can be allowed to continue. Signed-off-by: NeilBrown Signed-off-by: Steve Dickson --- diff --git a/utils/mountd/auth.c b/utils/mountd/auth.c index ccc849a..3843756 100644 --- a/utils/mountd/auth.c +++ b/utils/mountd/auth.c @@ -159,6 +159,9 @@ auth_authenticate_newcache(const struct sockaddr *caller, continue; if (use_ipaddr && !client_check(exp->m_client, ai)) continue; + if (exp->m_export.e_flags & NFSEXP_V4ROOT) + /* not acceptable for v[23] export */ + continue; break; } *error = not_exported; @@ -187,10 +190,6 @@ auth_authenticate_internal(const struct sockaddr *caller, const char *path, return NULL; } } - if (exp->m_export.e_flags & NFSEXP_V4ROOT) { - *error = no_entry; - return NULL; - } if (!(exp->m_export.e_flags & NFSEXP_INSECURE_PORT) && nfs_get_port(caller) >= IPPORT_RESERVED) { *error = illegal_port;