enum clnt_stat nfs3_commit(COMMIT3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_COMMIT, args, (xdrproc_t)xdr_COMMIT3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_fsinfo(FSINFOargs *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_FSINFO, args, (xdrproc_t)xdr_FSINFOargs, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_pathconf(PATHCONF3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_PATHCONF, args, (xdrproc_t)xdr_PATHCONF3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_link(LINK3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_LINK, args, (xdrproc_t)xdr_LINK3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_readdirplus(READDIRPLUS3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_READDIRPLUS, args, (xdrproc_t)xdr_READDIRPLUS3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_remove(REMOVE3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_REMOVE, args, (xdrproc_t)xdr_REMOVE3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_rmdir(RMDIR3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_RMDIR, args, (xdrproc_t)xdr_RMDIR3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_create(CREATE3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_CREATE, args, (xdrproc_t)xdr_CREATE3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_mknod(MKNOD3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_MKNOD, args, (xdrproc_t)xdr_MKNOD3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_access(ACCESS3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_ACCESS, args, (xdrproc_t)xdr_ACCESS3args, ctx, u_cb, priv, callflag); }
//#define NFS3_SETATTR 2 enum clnt_stat nfs3_setattr(SETATTR3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_SETATTR, args, (xdrproc_t)xdr_SETATTR3args, ctx, u_cb, priv, callflag); }
enum clnt_stat nfs3_lookup(LOOKUP3args *args, nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_LOOKUP, args, (xdrproc_t)xdr_LOOKUP3args, ctx, u_cb, priv, callflag); }
void decode_nfs(struct tuple4 *addr, u_char *buf, int len) { struct rpc_msg msg; struct xid_map *xm; int hdrlen; memset(&msg, 0, sizeof(msg)); if ((hdrlen = rpc_decode(buf, len, &msg)) == 0) return; buf += hdrlen; len -= hdrlen; if (msg.rm_direction == CALL && msg.rm_call.cb_prog == NFS_PROGRAM) { if (msg.rm_call.cb_vers == NFS_VERSION) nfs2_call(msg.rm_xid, msg.rm_call.cb_proc, buf, len); else if (msg.rm_call.cb_vers == NFS_V3) nfs3_call(msg.rm_xid, msg.rm_call.cb_proc, buf, len); } else if ((xm = xid_map_find(msg.rm_xid)) != NULL && msg.rm_direction == REPLY && msg.rm_reply.rp_stat == MSG_ACCEPTED && msg.acpted_rply.ar_stat == SUCCESS) { if (xm->vers == NFS_VERSION) nfs2_reply(xm, addr, buf, len); else if (xm->vers == NFS_V3) nfs3_reply(xm, addr, buf, len); free(xm->data); memset(xm, 0, sizeof(*xm)); } }
enum clnt_stat nfs3_null(nfs_ctx *ctx, user_cb u_cb, void * priv, int64_t callflag) { return nfs3_call(NFS3_NULL, NULL, (xdrproc_t)xdr_void, ctx, u_cb, priv, callflag); }