+++ /dev/null
-/* NFSv4.1 client for Windows
- * Copyright © 2012 The Regents of the University of Michigan
- *
- * Olga Kornievskaia <aglo@umich.edu>
- * Casey Bodley <cbodley@umich.edu>
- *
- * This library 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 2.1 of the License, or (at
- * your option) any later version.
- *
- * This library 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
- */
-
-#ifndef __NFS41_CALLBACK_H__
-#define __NFS41_CALLBACK_H__
-
-#include "wintirpc.h"
-#include "rpc/rpc.h"
-#include "nfs41_types.h"
-
-
-enum nfs41_callback_proc {
- CB_NULL = 0,
- CB_COMPOUND = 1,
-};
-
-enum nfs41_callback_op {
- OP_CB_GETATTR = 3,
- OP_CB_RECALL = 4,
- OP_CB_LAYOUTRECALL = 5,
- OP_CB_NOTIFY = 6,
- OP_CB_PUSH_DELEG = 7,
- OP_CB_RECALL_ANY = 8,
- OP_CB_RECALLABLE_OBJ_AVAIL = 9,
- OP_CB_RECALL_SLOT = 10,
- OP_CB_SEQUENCE = 11,
- OP_CB_WANTS_CANCELLED = 12,
- OP_CB_NOTIFY_LOCK = 13,
- OP_CB_NOTIFY_DEVICEID = 14,
- OP_CB_ILLEGAL = 10044
-};
-
-int nfs41_handle_callback(void *, void *, void *);
-
-/* OP_CB_LAYOUTRECALL */
-struct cb_recall_file {
- nfs41_fh fh;
- uint64_t offset;
- uint64_t length;
- stateid4 stateid;
-};
-union cb_recall_file_args {
- struct cb_recall_file file;
- nfs41_fsid fsid;
-};
-struct cb_recall {
-#ifdef __REACTOS__
- uint32_t type;
-#else
- enum pnfs_return_type type;
-#endif
- union cb_recall_file_args args;
-};
-struct cb_layoutrecall_args {
-#ifdef __REACTOS__
- uint32_t type;
- uint32_t iomode;
-#else
- enum pnfs_return_type type;
- enum pnfs_iomode iomode;
-#endif
- bool_t changed;
- struct cb_recall recall;
-};
-
-struct cb_layoutrecall_res {
- enum_t status;
-};
-
-/* OP_CB_RECALL_SLOT */
-struct cb_recall_slot_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_recall_slot_res {
- enum_t status;
-};
-
-/* OP_CB_SEQUENCE */
-struct cb_sequence_ref {
- uint32_t sequenceid;
- uint32_t slotid;
-};
-struct cb_sequence_ref_list {
- char sessionid[NFS4_SESSIONID_SIZE];
- struct cb_sequence_ref *calls;
- uint32_t call_count;
-};
-struct cb_sequence_args {
- char sessionid[NFS4_SESSIONID_SIZE];
- uint32_t sequenceid;
- uint32_t slotid;
- uint32_t highest_slotid;
- bool_t cachethis;
- struct cb_sequence_ref_list *ref_lists;
- uint32_t ref_list_count;
-};
-
-struct cb_sequence_res_ok {
- char sessionid[NFS4_SESSIONID_SIZE];
- uint32_t sequenceid;
- uint32_t slotid;
- uint32_t highest_slotid;
- uint32_t target_highest_slotid;
-};
-struct cb_sequence_res {
- enum_t status;
- struct cb_sequence_res_ok ok;
-};
-
-/* OP_CB_GETATTR */
-struct cb_getattr_args {
- nfs41_fh fh;
- bitmap4 attr_request;
-};
-
-struct cb_getattr_res {
- enum_t status;
- nfs41_file_info info;
-};
-
-/* OP_CB_RECALL */
-struct cb_recall_args {
- stateid4 stateid;
- bool_t truncate;
- nfs41_fh fh;
-};
-
-struct cb_recall_res {
- enum_t status;
-};
-
-/* OP_CB_NOTIFY */
-struct cb_notify_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_notify_res {
- enum_t status;
-};
-
-/* OP_CB_PUSH_DELEG */
-struct cb_push_deleg_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_push_deleg_res {
- enum_t status;
-};
-
-/* OP_CB_RECALL_ANY */
-struct cb_recall_any_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_recall_any_res {
- enum_t status;
-};
-
-/* OP_CB_RECALLABLE_OBJ_AVAIL */
-struct cb_recallable_obj_avail_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_recallable_obj_avail_res {
- enum_t status;
-};
-
-/* OP_CB_WANTS_CANCELLED */
-struct cb_wants_cancelled_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_wants_cancelled_res {
- enum_t status;
-};
-
-/* OP_CB_NOTIFY_LOCK */
-struct cb_notify_lock_args {
- uint32_t target_highest_slotid;
-};
-
-struct cb_notify_lock_res {
- enum_t status;
-};
-
-/* OP_CB_NOTIFY_DEVICEID */
-enum notify_deviceid_type4 {
- NOTIFY_DEVICEID4_CHANGE = 1,
- NOTIFY_DEVICEID4_DELETE = 2
-};
-struct notify_deviceid4 {
- unsigned char deviceid[16];
- enum notify_deviceid_type4 type;
-#ifdef __REACTOS__
- uint32_t layouttype;
-#else
- enum pnfs_layout_type layouttype;
-#endif
- bool_t immediate;
-};
-struct notify4 {
- bitmap4 mask;
- char *list;
- uint32_t len;
-};
-struct cb_notify_deviceid_args {
- struct notify4 *notify_list;
- uint32_t notify_count;
- struct notify_deviceid4 *change_list;
- uint32_t change_count;
-};
-
-struct cb_notify_deviceid_res {
- enum_t status;
-};
-
-/* CB_COMPOUND */
-#define CB_COMPOUND_MAX_TAG 64
-#define CB_COMPOUND_MAX_OPERATIONS 16
-
-union cb_op_args {
- struct cb_layoutrecall_args layoutrecall;
- struct cb_recall_slot_args recall_slot;
- struct cb_sequence_args sequence;
- struct cb_getattr_args getattr;
- struct cb_recall_args recall;
- struct cb_notify_deviceid_args notify_deviceid;
-};
-struct cb_argop {
- enum_t opnum;
- union cb_op_args args;
-};
-struct cb_compound_tag {
- char str[CB_COMPOUND_MAX_TAG];
- uint32_t len;
-};
-struct cb_compound_args {
- struct cb_compound_tag tag;
- uint32_t minorversion;
- uint32_t callback_ident; /* client MUST ignore */
- struct cb_argop *argarray;
- uint32_t argarray_count; /* <= CB_COMPOUND_MAX_OPERATIONS */
-};
-
-union cb_op_res {
- enum_t status; /* all results start with status */
- struct cb_layoutrecall_res layoutrecall;
- struct cb_recall_slot_res recall_slot;
- struct cb_sequence_res sequence;
- struct cb_getattr_res getattr;
- struct cb_recall_res recall;
- struct cb_notify_deviceid_res notify_deviceid;
-};
-struct cb_resop {
- enum_t opnum;
- union cb_op_res res;
- bool_t xdr_ok;
-};
-struct cb_compound_res {
- enum_t status;
- struct cb_compound_tag tag;
- struct cb_resop *resarray;
- uint32_t resarray_count; /* <= CB_COMPOUND_MAX_OPERATIONS */
-};
-
-
-/* callback_xdr.c */
-bool_t proc_cb_compound_args(XDR *xdr, struct cb_compound_args *args);
-bool_t proc_cb_compound_res(XDR *xdr, struct cb_compound_res *res);
-
-/* callback_server.c */
-struct __nfs41_session;
-void nfs41_callback_session_init(
- IN struct __nfs41_session *session);
-
-#endif /* !__NFS41_CALLBACK_H__ */