This is patch set 382 obtained from sourceforge cvs using cvsps. --- nfs-utils-1.0.7-kwc/ChangeLog | 8 +++++++- nfs-utils-1.0.7-kwc/support/export/client.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff -puN ChangeLog~nfsutils_patchset_382 ChangeLog --- nfs-utils-1.0.7/ChangeLog~nfsutils_patchset_382 2005-10-07 17:50:22.821319000 -0400 +++ nfs-utils-1.0.7-kwc/ChangeLog 2005-10-10 11:40:21.777481000 -0400 @@ -1,5 +1,11 @@ +2005-03-14 NeilBrown + Denis Vlasenko + * support/export/client.c(client_init and client_gettype): + treat N.N.N.N as a special case of MCL_SUBNETWORK instead of + MCL_FQDN + 2005-03-06 G. Allen Morris III - * support/nfs/cacheio.c(readline): Could not real lines greater + * support/nfs/cacheio.c(readline): Could not read lines greater than 128 bytes. [1157791] * utils/exportfs/exports.man: Added a SEE ALSO section and fixed 2 typos. [1018450] diff -puN support/export/client.c~nfsutils_patchset_382 support/export/client.c --- nfs-utils-1.0.7/support/export/client.c~nfsutils_patchset_382 2005-10-07 17:50:22.839301000 -0400 +++ nfs-utils-1.0.7-kwc/support/export/client.c 2005-10-07 17:50:22.942198000 -0400 @@ -138,7 +138,9 @@ client_init(nfs_client *clp, const char if (clp->m_type == MCL_SUBNETWORK) { char *cp = strchr(clp->m_hostname, '/'); + static char slash32[] = "/32"; + if(!cp) cp = slash32; *cp = '\0'; clp->m_addrlist[0].s_addr = inet_addr(clp->m_hostname); if (strchr(cp + 1, '.')) { @@ -443,5 +445,12 @@ client_gettype(char *ident) if (*sp == '\\' && sp[1]) sp++; } - return MCL_FQDN; + /* check for N.N.N.N */ + sp = ident; + if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '.') return MCL_FQDN; + sp++; if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '.') return MCL_FQDN; + sp++; if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '.') return MCL_FQDN; + sp++; if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '\0') return MCL_FQDN; + /* we lie here a bit. but technically N.N.N.N == N.N.N.N/32 :) */ + return MCL_SUBNETWORK; } _