diff options
author | Niels de Vos <ndevos@redhat.com> | 2015-01-01 13:15:45 +0100 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2015-03-15 07:01:38 -0700 |
commit | aa66b8404f45712c45d75d6a2a37f32e2792cc83 (patch) | |
tree | 11d7a95bd6286204ec0ec33e4cdd8ba0c5b48028 /xlators/nfs/server/src/nfs3-fh.c | |
parent | aac1ec0a61d9267b6ae7a280b368dfd357b7dcdc (diff) |
gNFS: Export / Netgroup authentication on Gluster NFS mount
* Parses linux style export file/netgroups file into a structure that
can be lookedup.
* This parser turns each line into a structure called an "export
directory". Each of these has a dictionary of hosts and netgroups
which can be looked up during the mount authentication process.
(See Change-Id Ic060aac and I7e6aa6bc)
* A string beginning withan '@' is treated as a netgroup and a string
beginning without an @ is a host.
(See Change-Id Ie04800d)
* This parser does not currently support all the options in the man page
('man exports'), but we can easily add them.
BUG: 1143880
URL: http://www.gluster.org/community/documentation/index.php/Features/Exports_Netgroups_Authentication
Change-Id: I181e8c1814d6ef3cae5b4d88353622734f0c0f0b
Original-author: Shreyas Siravara <shreyas.siravara@gmail.com>
CC: Richard Wareing <rwareing@fb.com>
CC: Jiffin Tony Thottan <jthottan@redhat.com>
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8758
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/nfs/server/src/nfs3-fh.c')
-rw-r--r-- | xlators/nfs/server/src/nfs3-fh.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/xlators/nfs/server/src/nfs3-fh.c b/xlators/nfs/server/src/nfs3-fh.c index 510913e8c43..88a8fcb1180 100644 --- a/xlators/nfs/server/src/nfs3-fh.c +++ b/xlators/nfs/server/src/nfs3-fh.c @@ -81,7 +81,7 @@ nfs3_fh_build_indexed_root_fh (xlator_list_t *cl, xlator_t *xl) struct nfs3_fh -nfs3_fh_build_uuid_root_fh (uuid_t volumeid) +nfs3_fh_build_uuid_root_fh (uuid_t volumeid, uuid_t mountid) { struct nfs3_fh fh = {{0}, }; struct iatt buf = {0, }; @@ -90,6 +90,7 @@ nfs3_fh_build_uuid_root_fh (uuid_t volumeid) uuid_copy (buf.ia_gfid, root); nfs3_fh_init (&fh, &buf); uuid_copy (fh.exportid, volumeid); + uuid_copy (fh.mountid, mountid); return fh; } @@ -115,13 +116,15 @@ nfs3_fh_to_str (struct nfs3_fh *fh, char *str, size_t len) { char gfid[GF_UUID_BUF_SIZE]; char exportid[GF_UUID_BUF_SIZE]; + char mountid[GF_UUID_BUF_SIZE]; if ((!fh) || (!str)) return; - snprintf (str, len, "FH: exportid %s, gfid %s", + snprintf (str, len, "FH: exportid %s, gfid %s, mountid %s", uuid_utoa_r (fh->exportid, exportid), - uuid_utoa_r (fh->gfid, gfid)); + uuid_utoa_r (fh->gfid, gfid), + uuid_utoa_r (fh->mountid, mountid)); } void @@ -148,7 +151,6 @@ nfs3_fh_build_parent_fh (struct nfs3_fh *child, struct iatt *newstat, nfs3_fh_init (newfh, newstat); uuid_copy (newfh->exportid, child->exportid); - return 0; } @@ -164,6 +166,7 @@ nfs3_build_fh (inode_t *inode, uuid_t exportid, struct nfs3_fh *newfh) newfh->ident[3] = GF_NFSFH_IDENT3; uuid_copy (newfh->gfid, inode->gfid); uuid_copy (newfh->exportid, exportid); + /*uuid_copy (newfh->mountid, mountid);*/ return 0; } @@ -176,7 +179,7 @@ nfs3_fh_build_child_fh (struct nfs3_fh *parent, struct iatt *newstat, nfs3_fh_init (newfh, newstat); uuid_copy (newfh->exportid, parent->exportid); - + uuid_copy (newfh->mountid, parent->mountid); return 0; } |