X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fmountd%2Fcache.c;h=dcb5dac1369bc3621290f730fd3b3537d1115cd0;hb=1ed351ec62f424339ca48fe66a3fe85d4d540031;hp=c57d3b0a326a16adf01c4ee9b083f01df470fab3;hpb=de95c40031904260a31a3686d6a48d7842abccb4;p=nfs-utils.git diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index c57d3b0..dcb5dac 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -35,7 +35,7 @@ * Record is terminated with newline. * */ -void cache_export_ent(char *domain, struct exportent *exp); +int cache_export_ent(char *domain, struct exportent *exp); char *lbuf = NULL; @@ -83,9 +83,6 @@ void auth_unix_ip(FILE *f) qword_print(f, *client?client:"DEFAULT"); qword_eol(f); - if (client && strcmp(ipaddr, client)) - mountlist_add(ipaddr, *client?client:"DEFAULT"); - if (client) free(client); } @@ -295,7 +292,6 @@ void nfsd_export(FILE *f) qword_printint(f, found->m_export.e_anonuid); qword_printint(f, found->m_export.e_anongid); qword_printint(f, found->m_export.e_fsid); - mountlist_add(dom, path); } qword_eol(f); out: @@ -356,12 +352,12 @@ int cache_process_req(fd_set *readfds) * % echo $domain $path $[now+30*60] $options $anonuid $anongid $fsid > /proc/net/rpc/nfsd.export/channel */ -void cache_export_ent(char *domain, struct exportent *exp) +int cache_export_ent(char *domain, struct exportent *exp) { - + int err; FILE *f = fopen("/proc/net/rpc/nfsd.export/channel", "w"); if (!f) - return; + return -1; qword_print(f, domain); qword_print(f, exp->e_path); @@ -370,33 +366,32 @@ void cache_export_ent(char *domain, struct exportent *exp) qword_printint(f, exp->e_anonuid); qword_printint(f, exp->e_anongid); qword_printint(f, exp->e_fsid); - qword_eol(f); + err = qword_eol(f); fclose(f); - - mountlist_add(domain, exp->e_path); + return err; } -void cache_export(nfs_export *exp) +int cache_export(nfs_export *exp) { + int err; FILE *f; f = fopen("/proc/net/rpc/auth.unix.ip/channel", "w"); if (!f) - return; + return -1; qword_print(f, "nfsd"); qword_print(f, inet_ntoa(exp->m_client->m_addrlist[0])); qword_printint(f, time(0)+30*60); qword_print(f, exp->m_client->m_hostname); - qword_eol(f); + err = qword_eol(f); fclose(f); - if (strcmp(inet_ntoa(exp->m_client->m_addrlist[0]), exp->m_client->m_hostname)) - mountlist_add(inet_ntoa(exp->m_client->m_addrlist[0]), exp->m_client->m_hostname); - - cache_export_ent(exp->m_client->m_hostname, &exp->m_export); + err = cache_export_ent(exp->m_client->m_hostname, &exp->m_export) + || err; + return err; } /* Get a filehandle. @@ -422,9 +417,10 @@ cache_get_filehandle(nfs_export *exp, int len, char *p) qword_print(f, exp->m_client->m_hostname); qword_print(f, p); qword_printint(f, len); - qword_eol(f); + failed = qword_eol(f); - failed = (fgets(buf, sizeof(buf), f) == NULL); + if (!failed) + failed = (fgets(buf, sizeof(buf), f) == NULL); fclose(f); if (failed) return NULL;