blob: 1f244b18642f7fa52b5e6f8a2086b3ced7224e56 [file] [log] [blame]
/*
*
*
* Copyright CEA/DAM/DIF (2008)
* contributeur : Philippe DENIEL philippe.deniel@cea.fr
* Thomas LEIBOVICI thomas.leibovici@cea.fr
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* ---------------------------------------
*/
/**
* @file nfs_proto_functions.h
* @brief Prototypes for NFS protocol functions.
* @note not called by other header files.
*/
#ifndef NFS_PROTO_FUNCTIONS_H
#define NFS_PROTO_FUNCTIONS_H
#include <pthread.h>
#include <sys/types.h>
#include <sys/param.h>
#include "sal_data.h"
extern const nfs_function_desc_t nfs3_func_desc[];
extern const nfs_function_desc_t nfs4_func_desc[];
extern const nfs_function_desc_t mnt1_func_desc[];
extern const nfs_function_desc_t mnt3_func_desc[];
extern const nfs_function_desc_t nlm4_func_desc[];
extern const nfs_function_desc_t rquota1_func_desc[];
extern const nfs_function_desc_t rquota2_func_desc[];
int mnt_Null(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int mnt_Mnt(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int mnt_Dump(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int mnt_Umnt(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int mnt_UmntAll(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int mnt_Export(nfs_arg_t *, struct svc_req *, nfs_res_t *);
/* @}
* -- End of MNT protocol functions. --
*/
int nlm_Null(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Test(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Lock(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Cancel(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Unlock(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Sm_Notify(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Test_Message(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Cancel_Message(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Lock_Message(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Unlock_Message(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Granted_Res(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Share(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Unshare(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nlm4_Free_All(nfs_arg_t *, struct svc_req *, nfs_res_t *);
/* @}
* -- End of NLM protocol functions. --
*/
int rquota_Null(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int rquota_getquota(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int rquota_getactivequota(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int rquota_setquota(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int rquota_setactivequota(nfs_arg_t *, struct svc_req *, nfs_res_t *);
/* @}
* * -- End of RQUOTA protocol functions. --
* */
int nfs_null(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_getattr(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_setattr(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_lookup(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_readlink(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_read(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_write(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_create(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_remove(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_rename(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_link(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_symlink(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_mkdir(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_rmdir(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_readdir(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_fsstat(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_access(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_readdirplus(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_fsinfo(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_pathconf(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_commit(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs3_mknod(nfs_arg_t *, struct svc_req *, nfs_res_t *);
/* Functions needed for nfs v4 */
int nfs4_Compound(nfs_arg_t *, struct svc_req *, nfs_res_t *);
int nfs4_op_access(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_close(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_commit(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_create(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_delegpurge(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_delegreturn(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_getattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_getfh(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_link(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_lock(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_lockt(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_locku(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_lookup(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_lookupp(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_nverify(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_open(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_open_confirm(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_open_downgrade(struct nfs_argop4 *, compound_data_t *data,
struct nfs_resop4 *);
int nfs4_op_openattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_putfh(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_putpubfh(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_putrootfh(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_read(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
int nfs4_op_readdir(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_remove(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_renew(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_rename(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_restorefh(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_readlink(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_savefh(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_secinfo(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_secinfo_no_name(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_setattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_setclientid(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_setclientid_confirm(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_verify(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_release_lockowner(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_illegal(struct nfs_argop4 *, compound_data_t *data,
struct nfs_resop4 *);
int nfs4_op_notsupp(struct nfs_argop4 *, compound_data_t *data,
struct nfs_resop4 *);
int nfs4_op_exchange_id(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_create_session(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_getdevicelist(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_free_stateid(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_getdeviceinfo(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_destroy_clientid(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_destroy_session(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_layoutget(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_layoutcommit(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_layoutreturn(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_reclaim_complete(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_sequence(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_set_ssv(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_test_stateid(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
int nfs4_op_write(struct nfs_argop4 *, compound_data_t *, struct nfs_resop4 *);
/* NFSv4.2 */
int nfs4_op_write_same(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_write_same_Free(nfs_resop4 *resp);
int nfs4_op_read_plus(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_read_plus_Free(nfs_resop4 *resp);
int nfs4_op_allocate(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_allocate_Free(nfs_resop4 *resp);
int nfs4_op_deallocate(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_deallocate_Free(nfs_resop4 *resp);
int nfs4_op_seek(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_seek_Free(nfs_resop4 *resp);
int nfs4_op_io_advise(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_io_advise_Free(nfs_resop4 *resp);
int nfs4_op_layouterror(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_layouterror_Free(nfs_resop4 *resp);
int nfs4_op_layoutstats(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_layoutstats_Free(nfs_resop4 *resp);
/* NFSv4.3 */
int nfs4_op_getxattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_getxattr_Free(nfs_resop4 *resp);
int nfs4_op_setxattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_setxattr_Free(nfs_resop4 *resp);
int nfs4_op_listxattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_listxattr_Free(nfs_resop4 *resp);
int nfs4_op_removexattr(struct nfs_argop4 *, compound_data_t *,
struct nfs_resop4 *);
void nfs4_op_removexattr_Free(nfs_resop4 *resp);
/* @}
* -- End of NFS protocols functions. --
*/
#define NFS_REQ_OK 0
#define NFS_REQ_DROP 1
/* Free functions */
void mnt1_Mnt_Free(nfs_res_t *);
void mnt3_Mnt_Free(nfs_res_t *);
void mnt_Dump_Free(nfs_res_t *);
void mnt_Export_Free(nfs_res_t *);
void mnt_Null_Free(nfs_res_t *);
void mnt_Umnt_Free(nfs_res_t *);
void mnt_UmntAll_Free(nfs_res_t *);
void nlm_Null_Free(nfs_res_t *);
void nlm4_Test_Free(nfs_res_t *);
void nlm4_Lock_Free(nfs_res_t *);
void nlm4_NM_Lock_Free(nfs_res_t *);
void nlm4_Share_Free(nfs_res_t *);
void nlm4_Unshare_Free(nfs_res_t *);
void nlm4_Cancel_Free(nfs_res_t *);
void nlm4_Unlock_Free(nfs_res_t *);
void nlm4_Sm_Notify_Free(nfs_res_t *);
void nlm4_Granted_Res_Free(nfs_res_t *);
void nlm4_Free_All_Free(nfs_res_t *);
void rquota_Null_Free(nfs_res_t *);
void rquota_getquota_Free(nfs_res_t *);
void rquota_getactivequota_Free(nfs_res_t *);
void rquota_setquota_Free(nfs_res_t *);
void rquota_setactivequota_Free(nfs_res_t *);
void nfs_null_free(nfs_res_t *);
void nfs3_getattr_free(nfs_res_t *);
void nfs3_setattr_free(nfs_res_t *);
void nfs3_lookup_free(nfs_res_t *);
void nfs3_access_free(nfs_res_t *);
void nfs3_readlink_free(nfs_res_t *);
void nfs3_write_free(nfs_res_t *);
void nfs3_create_free(nfs_res_t *);
void nfs3_mkdir_free(nfs_res_t *);
void nfs3_symlink_free(nfs_res_t *);
void nfs3_mknod_free(nfs_res_t *);
void nfs3_remove_free(nfs_res_t *);
void nfs3_rmdir_free(nfs_res_t *);
void nfs3_rename_free(nfs_res_t *);
void nfs3_link_free(nfs_res_t *);
void nfs3_readdir_free(nfs_res_t *);
void nfs3_readdirplus_free(nfs_res_t *);
void nfs3_fsstat_free(nfs_res_t *);
void nfs3_fsinfo_free(nfs_res_t *);
void nfs3_pathconf_free(nfs_res_t *);
void nfs3_commit_free(nfs_res_t *);
void nfs3_read_free(nfs_res_t *);
void nfs4_Compound_FreeOne(nfs_resop4 *);
void nfs4_Compound_Free(nfs_res_t *);
void nfs4_Compound_CopyResOne(nfs_resop4 *, nfs_resop4 *);
void nfs4_Compound_CopyRes(nfs_res_t *, nfs_res_t *);
void nfs4_op_access_Free(nfs_resop4 *);
void nfs4_op_close_Free(nfs_resop4 *);
void nfs4_op_commit_Free(nfs_resop4 *);
void nfs4_op_create_Free(nfs_resop4 *);
void nfs4_op_delegreturn_Free(nfs_resop4 *);
void nfs4_op_delegpurge_Free(nfs_resop4 *);
void nfs4_op_getattr_Free(nfs_resop4 *);
void nfs4_op_getfh_Free(nfs_resop4 *);
void nfs4_op_illegal_Free(nfs_resop4 *);
void nfs4_op_notsupp_Free(nfs_resop4 *);
void nfs4_op_link_Free(nfs_resop4 *);
void nfs4_op_lock_Free(nfs_resop4 *);
void nfs4_op_lockt_Free(nfs_resop4 *);
void nfs4_op_locku_Free(nfs_resop4 *);
void nfs4_op_lookup_Free(nfs_resop4 *);
void nfs4_op_lookupp_Free(nfs_resop4 *);
void nfs4_op_nverify_Free(nfs_resop4 *);
void nfs4_op_open_Free(nfs_resop4 *);
void nfs4_op_open_confirm_Free(nfs_resop4 *);
void nfs4_op_open_downgrade_Free(nfs_resop4 *);
void nfs4_op_openattr_Free(nfs_resop4 *);
void nfs4_op_openattr_Free(nfs_resop4 *);
void nfs4_op_putfh_Free(nfs_resop4 *);
void nfs4_op_putpubfh_Free(nfs_resop4 *);
void nfs4_op_putrootfh_Free(nfs_resop4 *);
void nfs4_op_read_Free(nfs_resop4 *);
void nfs4_op_readdir_Free(nfs_resop4 *);
void nfs4_op_readlink_Free(nfs_resop4 *);
void nfs4_op_release_lockowner_Free(nfs_resop4 *);
void nfs4_op_rename_Free(nfs_resop4 *);
void nfs4_op_remove_Free(nfs_resop4 *);
void nfs4_op_renew_Free(nfs_resop4 *);
void nfs4_op_restorefh_Free(nfs_resop4 *);
void nfs4_op_savefh_Free(nfs_resop4 *);
void nfs4_op_secinfo_Free(nfs_resop4 *);
void nfs4_op_secinfo_no_name_Free(nfs_resop4 *);
void nfs4_op_setattr_Free(nfs_resop4 *);
void nfs4_op_setclientid_Free(nfs_resop4 *);
void nfs4_op_setclientid_confirm_Free(nfs_resop4 *);
void nfs4_op_verify_Free(nfs_resop4 *);
void nfs4_op_write_Free(nfs_resop4 *);
void nfs4_op_close_CopyRes(CLOSE4res *, CLOSE4res *);
void nfs4_op_lock_CopyRes(LOCK4res *, LOCK4res *);
void nfs4_op_locku_CopyRes(LOCKU4res *, LOCKU4res *);
void nfs4_op_open_CopyRes(OPEN4res *, OPEN4res *);
void nfs4_op_open_confirm_CopyRes(OPEN_CONFIRM4res *,
OPEN_CONFIRM4res *);
void nfs4_op_open_downgrade_CopyRes(OPEN_DOWNGRADE4res *,
OPEN_DOWNGRADE4res *);
void nfs4_op_exchange_id_Free(nfs_resop4 *);
void nfs4_op_close_Free(nfs_resop4 *);
void nfs4_op_create_session_Free(nfs_resop4 *);
void nfs4_op_getdevicelist_Free(nfs_resop4 *);
void nfs4_op_getdeviceinfo_Free(nfs_resop4 *);
void nfs4_op_free_stateid_Free(nfs_resop4 *);
void nfs4_op_destroy_session_Free(nfs_resop4 *);
void nfs4_op_lock_Free(nfs_resop4 *);
void nfs4_op_lockt_Free(nfs_resop4 *);
void nfs4_op_locku_Free(nfs_resop4 *);
void nfs4_op_read_Free(nfs_resop4 *);
void nfs4_op_sequence_Free(nfs_resop4 *);
void nfs4_op_set_ssv_Free(nfs_resop4 *);
void nfs4_op_test_stateid_Free(nfs_resop4 *);
void nfs4_op_write_Free(nfs_resop4 *);
void nfs4_op_destroy_clientid_Free(nfs_resop4 *);
void nfs4_op_reclaim_complete_Free(nfs_resop4 *);
void compound_data_Free(compound_data_t *);
/* Pseudo FS functions */
bool pseudo_mount_export(struct gsh_export *exp);
void create_pseudofs(void);
void pseudo_unmount_export(struct gsh_export *exp);
#endif /* NFS_PROTO_FUNCTIONS_H */