summaryrefslogtreecommitdiffstats
path: root/support/export/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'support/export/client.c')
-rw-r--r--support/export/client.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/support/export/client.c b/support/export/client.c
index 3afd4f2..1fd4269 100644
--- a/support/export/client.c
+++ b/support/export/client.c
@@ -239,12 +239,23 @@ client_check(nfs_client *clp, struct hostent *hp)
{
char *dot;
int match;
+ struct hostent *nhp = NULL;
+ struct sockaddr_in addr;
/* First, try to match the hostname without
* splitting off the domain */
if (innetgr(cname+1, hname, NULL, NULL))
return 1;
+ /* If hname is ip address convert to FQDN */
+ if (inet_aton(hname, &addr.sin_addr) &&
+ (nhp = gethostbyaddr((const char *)&(addr.sin_addr),
+ sizeof(addr.sin_addr), AF_INET))) {
+ hname = (char *)nhp->h_name;
+ if (innetgr(cname+1, hname, NULL, NULL))
+ return 1;
+ }
+
/* Okay, strip off the domain (if we have one) */
if ((dot = strchr(hname, '.')) == NULL)
return 0;
@@ -291,7 +302,7 @@ client_gettype(char *ident)
{
char *sp;
- if (ident[0] == '\0')
+ if (ident[0] == '\0' || strcmp(ident, "*")==0)
return MCL_ANONYMOUS;
if (ident[0] == '@') {
#ifndef HAVE_INNETGR