diff -up nfs-utils-1.3.0/support/export/client.c.save nfs-utils-1.3.0/support/export/client.c --- nfs-utils-1.3.0/support/export/client.c.save 2016-06-07 14:02:11.244677000 -0400 +++ nfs-utils-1.3.0/support/export/client.c 2016-06-07 14:03:11.380193000 -0400 @@ -635,7 +635,7 @@ check_netgroup(const nfs_client *clp, co const char *netgroup = clp->m_hostname + 1; struct addrinfo *tmp = NULL; struct hostent *hp; - char *dot, *hname; + char *dot, *hname, *ip; int i, match; match = 0; @@ -682,6 +682,18 @@ check_netgroup(const nfs_client *clp, co } } + /* check whether the IP itself is in the netgroup */ + ip = calloc(INET6_ADDRSTRLEN, 1); + if (inet_ntop(ai->ai_family, &(((struct sockaddr_in *)ai->ai_addr)->sin_addr), ip, INET6_ADDRSTRLEN) == ip) { + if (innetgr(netgroup, ip, NULL, NULL)) { + free(hname); + hname = ip; + match = 1; + goto out; + } + } + free(ip); + /* Okay, strip off the domain (if we have one) */ dot = strchr(hname, '.'); if (dot == NULL)