You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1001 B
31 lines
1001 B
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)
|
|
|