summaryrefslogtreecommitdiffstats
path: root/utils/mountd/cache.c
diff options
context:
space:
mode:
authorneilbrown <neilbrown>2003-08-04 03:14:23 +0000
committerneilbrown <neilbrown>2003-08-04 03:14:23 +0000
commit18fc7a86a2a1213762cc4107565903127efadafc (patch)
tree936419df6ee1563d17f0d9a6a57006c754fb49b9 /utils/mountd/cache.c
parent9e07f5fc946f63e32028f860566c34432059c179 (diff)
downloadnfs-utils-18fc7a86a2a1213762cc4107565903127efadafc.tar.gz
nfs-utils-18fc7a86a2a1213762cc4107565903127efadafc.tar.xz
nfs-utils-18fc7a86a2a1213762cc4107565903127efadafc.zip
Open channel files O_WRONLY, and improve mountlist support.
Diffstat (limited to 'utils/mountd/cache.c')
-rw-r--r--utils/mountd/cache.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 3402d12..2e35b17 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -78,6 +78,9 @@ 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);
}
@@ -258,6 +261,7 @@ 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:
@@ -320,7 +324,7 @@ int cache_process_req(fd_set *readfds)
void cache_export_ent(char *domain, struct exportent *exp)
{
- FILE *f = fopen("/proc/net/rpc/nfsd.export/channel", "r+");
+ FILE *f = fopen("/proc/net/rpc/nfsd.export/channel", "w");
if (!f)
return;
@@ -334,13 +338,15 @@ void cache_export_ent(char *domain, struct exportent *exp)
qword_eol(f);
fclose(f);
+
+ mountlist_add(domain, exp->e_path);
}
void cache_export(nfs_export *exp)
{
FILE *f;
- f = fopen("/proc/net/rpc/auth.unix.ip/channel", "r+");
+ f = fopen("/proc/net/rpc/auth.unix.ip/channel", "w");
if (!f)
return;
@@ -352,6 +358,9 @@ void cache_export(nfs_export *exp)
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);
}