Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * fs/nfs/nfs4idmap.h
0003  *
0004  *  UID and GID to name mapping for clients.
0005  *
0006  *  Copyright (c) 2002 The Regents of the University of Michigan.
0007  *  All rights reserved.
0008  *
0009  *  Marius Aamodt Eriksen <marius@umich.edu>
0010  *
0011  *  Redistribution and use in source and binary forms, with or without
0012  *  modification, are permitted provided that the following conditions
0013  *  are met:
0014  *
0015  *  1. Redistributions of source code must retain the above copyright
0016  *     notice, this list of conditions and the following disclaimer.
0017  *  2. Redistributions in binary form must reproduce the above copyright
0018  *     notice, this list of conditions and the following disclaimer in the
0019  *     documentation and/or other materials provided with the distribution.
0020  *  3. Neither the name of the University nor the names of its
0021  *     contributors may be used to endorse or promote products derived
0022  *     from this software without specific prior written permission.
0023  *
0024  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
0025  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
0026  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
0027  *  DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
0028  *  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0029  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0030  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
0031  *  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
0032  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
0033  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
0034  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0035  */
0036 #ifndef NFS_IDMAP_H
0037 #define NFS_IDMAP_H
0038 
0039 #include <linux/uidgid.h>
0040 #include <uapi/linux/nfs_idmap.h>
0041 
0042 
0043 /* Forward declaration to make this header independent of others */
0044 struct nfs_client;
0045 struct nfs_server;
0046 struct nfs_fattr;
0047 struct nfs4_string;
0048 
0049 int nfs_idmap_init(void);
0050 void nfs_idmap_quit(void);
0051 int nfs_idmap_new(struct nfs_client *);
0052 void nfs_idmap_delete(struct nfs_client *);
0053 
0054 void nfs_fattr_init_names(struct nfs_fattr *fattr,
0055         struct nfs4_string *owner_name,
0056         struct nfs4_string *group_name);
0057 void nfs_fattr_free_names(struct nfs_fattr *);
0058 void nfs_fattr_map_and_free_names(struct nfs_server *, struct nfs_fattr *);
0059 
0060 int nfs_map_name_to_uid(const struct nfs_server *, const char *, size_t, kuid_t *);
0061 int nfs_map_group_to_gid(const struct nfs_server *, const char *, size_t, kgid_t *);
0062 int nfs_map_uid_to_name(const struct nfs_server *, kuid_t, char *, size_t);
0063 int nfs_map_gid_to_group(const struct nfs_server *, kgid_t, char *, size_t);
0064 
0065 int nfs_map_string_to_numeric(const char *name, size_t namelen, __u32 *res);
0066 
0067 extern unsigned int nfs_idmap_cache_timeout;
0068 #endif /* NFS_IDMAP_H */