diff options
Diffstat (limited to 'xlators/nfs')
| -rw-r--r-- | xlators/nfs/server/src/nfs-fops.c | 1 | ||||
| -rw-r--r-- | xlators/nfs/server/src/nfs.c | 15 | ||||
| -rw-r--r-- | xlators/nfs/server/src/nfs.h | 5 | 
3 files changed, 15 insertions, 6 deletions
diff --git a/xlators/nfs/server/src/nfs-fops.c b/xlators/nfs/server/src/nfs-fops.c index 819ae98b081..52fdd9796c3 100644 --- a/xlators/nfs/server/src/nfs-fops.c +++ b/xlators/nfs/server/src/nfs-fops.c @@ -219,6 +219,7 @@ nfs_create_frame (xlator_t *xl, nfs_user_t *nfu)          frame->root->pid = NFS_PID;          frame->root->uid = nfu->uid;          frame->root->gid = nfu->gids[NFS_PRIMGID_IDX]; +        memcpy (&frame->root->identifier, &nfu->identifier, UNIX_PATH_MAX);          frame->root->lk_owner = nfu->lk_owner;          if (nfu->ngrps != 1) { diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c index 4dda35c49ef..116854b9109 100644 --- a/xlators/nfs/server/src/nfs.c +++ b/xlators/nfs/server/src/nfs.c @@ -639,8 +639,8 @@ nfs_user_root_create (nfs_user_t *newnfu)  int -nfs_user_create (nfs_user_t *newnfu, uid_t uid, gid_t gid, gid_t *auxgids, -                 int auxcount) +nfs_user_create (nfs_user_t *newnfu, uid_t uid, gid_t gid, +                 rpc_transport_t *trans, gid_t *auxgids, int auxcount)  {          int     x = 1;          int     y = 0; @@ -655,6 +655,10 @@ nfs_user_create (nfs_user_t *newnfu, uid_t uid, gid_t gid, gid_t *auxgids,          newnfu->uid = uid;          newnfu->gids[0] = gid;          newnfu->ngrps = 1; +        if (trans) { +                memcpy (&newnfu->identifier, trans->peerinfo.identifier, +                       UNIX_PATH_MAX); +        }          gf_msg_trace (GF_NFS, 0, "uid: %d, gid %d, gids: %d", uid, gid,                  auxcount); @@ -683,7 +687,9 @@ nfs_request_user_init (nfs_user_t *nfu, rpcsvc_request_t *req)          gidarr = rpcsvc_auth_unix_auxgids (req, &gids);          nfs_user_create (nfu, rpcsvc_request_uid (req), -                         rpcsvc_request_gid (req), gidarr, gids); +                         rpcsvc_request_gid (req), +                         rpcsvc_request_transport (req), +                         gidarr, gids);          return;  } @@ -699,7 +705,8 @@ nfs_request_primary_user_init (nfs_user_t *nfu, rpcsvc_request_t *req,                  return;          gidarr = rpcsvc_auth_unix_auxgids (req, &gids); -        nfs_user_create (nfu, uid, gid, gidarr, gids); +        nfs_user_create (nfu, uid, gid, rpcsvc_request_transport (req), +                         gidarr, gids);          return;  } diff --git a/xlators/nfs/server/src/nfs.h b/xlators/nfs/server/src/nfs.h index 107140bc720..82df163d494 100644 --- a/xlators/nfs/server/src/nfs.h +++ b/xlators/nfs/server/src/nfs.h @@ -125,14 +125,15 @@ typedef struct nfs_user_info {          gid_t   gids[NFS_NGROUPS];          int     ngrps;          gf_lkowner_t lk_owner; +        char    identifier[UNIX_PATH_MAX];  /* ip of user */  } nfs_user_t;  extern int  nfs_user_root_create (nfs_user_t *newnfu);  extern int -nfs_user_create (nfs_user_t *newnfu, uid_t uid, gid_t gid, gid_t *auxgids, -                 int auxcount); +nfs_user_create (nfs_user_t *newnfu, uid_t uid, gid_t gid, +                 rpc_transport_t *trans, gid_t *auxgids, int auxcount);  extern void  nfs_request_user_init (nfs_user_t *nfu, rpcsvc_request_t *req);  | 
