summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjl <hjl>2000-10-18 06:16:02 +0000
committerhjl <hjl>2000-10-18 06:16:02 +0000
commita19d80373216f3257c1b5ef59e41279f94744377 (patch)
treefc391b851dd5aeabac15b737ed9a00b1f3759146
parent7bcbf97acfef86109f99867fa744e3e216dd83b6 (diff)
downloadnfs-utils-a19d80373216f3257c1b5ef59e41279f94744377.tar.gz
nfs-utils-a19d80373216f3257c1b5ef59e41279f94744377.tar.xz
nfs-utils-a19d80373216f3257c1b5ef59e41279f94744377.zip
2000-10-17 Scott McDermott <mcdermot@questra.com>
* support/export/client.c (client_init): Support CIDR netmask in /etc/exports.
-rw-r--r--ChangeLog5
-rw-r--r--support/export/client.c15
2 files changed, 19 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6088634..ab7c336 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-10-17 Scott McDermott <mcdermot@questra.com>
+
+ * support/export/client.c (client_init): Support CIDR netmask
+ in /etc/exports.
+
2000-10-11 H.J. Lu <hjl@lucon.org>
* aclocal.m4 (AC_TCP_WRAPPER): Fix a typo.
diff --git a/support/export/client.c b/support/export/client.c
index a7f9d02..3afd4f2 100644
--- a/support/export/client.c
+++ b/support/export/client.c
@@ -118,7 +118,20 @@ client_init(nfs_client *clp, const char *hname, struct hostent *hp)
*cp = '\0';
clp->m_addrlist[0].s_addr = inet_addr(clp->m_hostname);
- clp->m_addrlist[1].s_addr = inet_addr(cp+1);
+ if (strchr(cp + 1, '.')) {
+ clp->m_addrlist[1].s_addr = inet_addr(cp+1);
+ }
+ else {
+ int netmask = atoi(cp + 1);
+ if (0 < netmask && netmask <= 32) {
+ clp->m_addrlist[1].s_addr =
+ htonl ((uint32_t) ~0 << (32 - netmask));
+ }
+ else {
+ xlog(L_FATAL, "invalid netmask `%s' for %s",
+ cp + 1, clp->m_hostname);
+ }
+ }
*cp = '/';
clp->m_naddr = 0;
} else if (!hp) {