ReactOS  0.4.12-dev-14-gd0c8636
callback_xdr.c File Reference
#include "nfs41_callback.h"
#include "nfs41_ops.h"
#include "util.h"
#include "daemon_debug.h"
Include dependency graph for callback_xdr.c:

Go to the source code of this file.

Macros

#define CBXLVL   2 /* dprintf level for callback xdr logging */
 
#define CBX_ERR(msg)   dprintf((CBXLVL), __FUNCTION__ ": failed at " msg "\n")
 

Functions

bool_t xdr_bitmap4 (XDR *xdr, bitmap4 *bitmap)
 
bool_t xdr_fattr4 (XDR *xdr, fattr4 *fattr)
 
static bool_t common_stateid (XDR *xdr, stateid4 *stateid)
 
static bool_t common_fh (XDR *xdr, nfs41_fh *fh)
 
static bool_t common_fsid (XDR *xdr, nfs41_fsid *fsid)
 
static bool_t common_notify4 (XDR *xdr, struct notify4 *notify)
 
static bool_t op_cb_layoutrecall_file (XDR *xdr, struct cb_recall_file *args)
 
static bool_t op_cb_layoutrecall_fsid (XDR *xdr, union cb_recall_file_args *args)
 
static bool_t op_cb_layoutrecall_args (XDR *xdr, struct cb_layoutrecall_args *args)
 
static bool_t op_cb_layoutrecall_res (XDR *xdr, struct cb_layoutrecall_res *res)
 
static bool_t op_cb_recall_slot_args (XDR *xdr, struct cb_recall_slot_args *res)
 
static bool_t op_cb_recall_slot_res (XDR *xdr, struct cb_recall_slot_res *res)
 
static bool_t op_cb_sequence_ref (XDR *xdr, struct cb_sequence_ref *args)
 
static bool_t op_cb_sequence_ref_list (XDR *xdr, struct cb_sequence_ref_list *args)
 
static bool_t op_cb_sequence_args (XDR *xdr, struct cb_sequence_args *args)
 
static bool_t op_cb_sequence_res_ok (XDR *xdr, struct cb_sequence_res_ok *res)
 
static bool_t op_cb_sequence_res (XDR *xdr, struct cb_sequence_res *res)
 
static bool_t op_cb_getattr_args (XDR *xdr, struct cb_getattr_args *args)
 
static bool_t info_to_fattr4 (nfs41_file_info *info, fattr4 *fattr)
 
static bool_t op_cb_getattr_res (XDR *xdr, struct cb_getattr_res *res)
 
static bool_t op_cb_recall_args (XDR *xdr, struct cb_recall_args *args)
 
static bool_t op_cb_recall_res (XDR *xdr, struct cb_recall_res *res)
 
static bool_t op_cb_notify_args (XDR *xdr, struct cb_notify_args *res)
 
static bool_t op_cb_notify_res (XDR *xdr, struct cb_notify_res *res)
 
static bool_t op_cb_push_deleg_args (XDR *xdr, struct cb_push_deleg_args *res)
 
static bool_t op_cb_push_deleg_res (XDR *xdr, struct cb_push_deleg_res *res)
 
static bool_t op_cb_recall_any_args (XDR *xdr, struct cb_recall_any_args *res)
 
static bool_t op_cb_recall_any_res (XDR *xdr, struct cb_recall_any_res *res)
 
static bool_t op_cb_recallable_obj_avail_args (XDR *xdr, struct cb_recallable_obj_avail_args *res)
 
static bool_t op_cb_recallable_obj_avail_res (XDR *xdr, struct cb_recallable_obj_avail_res *res)
 
static bool_t op_cb_wants_cancelled_args (XDR *xdr, struct cb_wants_cancelled_args *res)
 
static bool_t op_cb_wants_cancelled_res (XDR *xdr, struct cb_wants_cancelled_res *res)
 
static bool_t op_cb_notify_lock_args (XDR *xdr, struct cb_notify_lock_args *res)
 
static bool_t op_cb_notify_lock_res (XDR *xdr, struct cb_notify_lock_res *res)
 
static bool_t cb_notify_deviceid_change (XDR *xdr, struct notify_deviceid4 *change)
 
static bool_t cb_notify_deviceid_delete (XDR *xdr, struct notify_deviceid4 *change)
 
static bool_t op_cb_notify_deviceid_args (XDR *xdr, struct cb_notify_deviceid_args *args)
 
static bool_t op_cb_notify_deviceid_res (XDR *xdr, struct cb_notify_deviceid_res *res)
 
static bool_t cb_compound_tag (XDR *xdr, struct cb_compound_tag *args)
 
static bool_t cb_compound_argop (XDR *xdr, struct cb_argop *args)
 
bool_t proc_cb_compound_args (XDR *xdr, struct cb_compound_args *args)
 
static bool_t cb_compound_resop (XDR *xdr, struct cb_resop *res)
 
bool_t proc_cb_compound_res (XDR *xdr, struct cb_compound_res *res)
 

Variables

static const struct xdr_discrim cb_layoutrecall_discrim []
 
static const struct xdr_discrim cb_sequence_res_discrim []
 
static const struct xdr_discrim cb_argop_discrim []
 
static const struct xdr_discrim cb_resop_discrim []
 

Macro Definition Documentation

◆ CBX_ERR

◆ CBXLVL

#define CBXLVL   2 /* dprintf level for callback xdr logging */

Definition at line 28 of file callback_xdr.c.

Function Documentation

◆ cb_compound_argop()

static bool_t cb_compound_argop ( XDR xdr,
struct cb_argop args 
)
static

Definition at line 579 of file callback_xdr.c.

Referenced by proc_cb_compound_args().

580 {
581  bool_t result;
582 
583  result = xdr_union(xdr, &args->opnum, (char*)&args->args,
585  if (!result) { CBX_ERR("cmb:argop.args"); goto out; }
586 out:
587  return result;
588 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_union(XDR *xdrs, enum_t *dscmp, char *unp, const struct xdr_discrim *choices, xdrproc_t dfault)
Definition: xdr.c:629
enum_t opnum
static const struct xdr_discrim cb_argop_discrim[]
Definition: callback_xdr.c:563
#define NULL_xdrproc_t
Definition: xdr.h:246
static FILE * out
Definition: regtests2xml.c:44
union cb_op_args args
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ cb_compound_resop()

static bool_t cb_compound_resop ( XDR xdr,
struct cb_resop res 
)
static

Definition at line 628 of file callback_xdr.c.

Referenced by proc_cb_compound_res().

629 {
630  /* save xdr encode/decode status to see which operation failed */
631  res->xdr_ok = xdr_union(xdr, &res->opnum, (char*)&res->res,
633  if (!res->xdr_ok) { CBX_ERR("resop.res"); goto out; }
634 out:
635  return res->xdr_ok;
636 }
static const struct xdr_discrim cb_resop_discrim[]
Definition: callback_xdr.c:612
bool_t xdr_union(XDR *xdrs, enum_t *dscmp, char *unp, const struct xdr_discrim *choices, xdrproc_t dfault)
Definition: xdr.c:629
bool_t xdr_ok
#define NULL_xdrproc_t
Definition: xdr.h:246
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
union cb_op_res res
enum_t opnum

◆ cb_compound_tag()

static bool_t cb_compound_tag ( XDR xdr,
struct cb_compound_tag args 
)
static

Definition at line 556 of file callback_xdr.c.

Referenced by proc_cb_compound_args(), and proc_cb_compound_res().

557 {
558  return xdr_u_int32_t(xdr, &args->len)
559  && args->len <= CB_COMPOUND_MAX_TAG
560  && xdr_opaque(xdr, args->str, args->len);
561 }
char str[CB_COMPOUND_MAX_TAG]
#define CB_COMPOUND_MAX_TAG
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239

◆ cb_notify_deviceid_change()

static bool_t cb_notify_deviceid_change ( XDR xdr,
struct notify_deviceid4 change 
)
static

Definition at line 461 of file callback_xdr.c.

Referenced by op_cb_notify_deviceid_args().

462 {
463  bool_t result;
464 
465  result = xdr_u_int32_t(xdr, (uint32_t*)&change->layouttype);
466  if (!result) { CBX_ERR("notify_deviceid.change.layouttype"); goto out; }
467 
468  result = xdr_opaque(xdr, (char*)change->deviceid, PNFS_DEVICEID_SIZE);
469  if (!result) { CBX_ERR("notify_deviceid.change.deviceid"); goto out; }
470 
471  result = xdr_bool(xdr, &change->immediate);
472  if (!result) { CBX_ERR("notify_deviceid.change.immediate"); goto out; }
473 out:
474  return result;
475 }
unsigned char deviceid[16]
int32_t bool_t
Definition: types.h:101
#define PNFS_DEVICEID_SIZE
Definition: pnfs.h:111
enum pnfs_layout_type layouttype
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
bool_t xdr_bool(XDR *xdrs, bool_t *bp)
Definition: xdr.c:428
UINT32 uint32_t
Definition: types.h:75
GLuint64EXT * result
Definition: glext.h:11304

◆ cb_notify_deviceid_delete()

static bool_t cb_notify_deviceid_delete ( XDR xdr,
struct notify_deviceid4 change 
)
static

Definition at line 477 of file callback_xdr.c.

Referenced by op_cb_notify_deviceid_args().

478 {
479  bool_t result;
480 
481  result = xdr_u_int32_t(xdr, (uint32_t*)&change->layouttype);
482  if (!result) { CBX_ERR("notify_deviceid.delete.layouttype"); goto out; }
483 
484  result = xdr_opaque(xdr, (char*)change->deviceid, PNFS_DEVICEID_SIZE);
485  if (!result) { CBX_ERR("notify_deviceid.delete.deviceid"); goto out; }
486 out:
487  return result;
488 }
unsigned char deviceid[16]
int32_t bool_t
Definition: types.h:101
#define PNFS_DEVICEID_SIZE
Definition: pnfs.h:111
enum pnfs_layout_type layouttype
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
UINT32 uint32_t
Definition: types.h:75
GLuint64EXT * result
Definition: glext.h:11304

◆ common_fh()

static bool_t common_fh ( XDR xdr,
nfs41_fh fh 
)
static

Definition at line 45 of file callback_xdr.c.

Referenced by op_cb_getattr_args(), op_cb_layoutrecall_file(), and op_cb_recall_args().

46 {
47  return xdr_u_int32_t(xdr, &fh->len)
48  && fh->len <= NFS4_FHSIZE
49  && xdr_opaque(xdr, (char*)fh->fh, fh->len);
50 }
uint32_t len
Definition: nfs41_types.h:54
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
unsigned char fh[NFS4_FHSIZE]
Definition: nfs41_types.h:53
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
#define NFS4_FHSIZE
Definition: nfs41_const.h:29

◆ common_fsid()

static bool_t common_fsid ( XDR xdr,
nfs41_fsid fsid 
)
static

Definition at line 52 of file callback_xdr.c.

Referenced by op_cb_layoutrecall_fsid().

53 {
54  return xdr_u_int64_t(xdr, &fsid->major)
55  && xdr_u_int64_t(xdr, &fsid->minor);
56 }
uint64_t minor
Definition: nfs41_types.h:67
bool_t xdr_u_int64_t(XDR *xdrs, u_int64_t *ullp)
Definition: xdr.c:828
uint64_t major
Definition: nfs41_types.h:66

◆ common_notify4()

static bool_t common_notify4 ( XDR xdr,
struct notify4 notify 
)
static

Definition at line 58 of file callback_xdr.c.

Referenced by op_cb_notify_deviceid_args().

59 {
60  return xdr_bitmap4(xdr, &notify->mask)
61  && xdr_bytes(xdr, &notify->list, &notify->len, NFS4_OPAQUE_LIMIT);
62 }
uint32_t len
bool_t xdr_bitmap4(XDR *xdr, bitmap4 *bitmap)
Definition: nfs41_xdr.c:48
#define NFS4_OPAQUE_LIMIT
Definition: nfs41_const.h:31
bool_t xdr_bytes(XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize)
Definition: xdr.c:536
bitmap4 mask
char * list

◆ common_stateid()

static bool_t common_stateid ( XDR xdr,
stateid4 stateid 
)
static

Definition at line 39 of file callback_xdr.c.

Referenced by op_cb_layoutrecall_file(), and op_cb_recall_args().

40 {
41  return xdr_u_int32_t(xdr, &stateid->seqid)
42  && xdr_opaque(xdr, (char*)stateid->other, NFS4_STATEID_OTHER);
43 }
unsigned char other[NFS4_STATEID_OTHER]
Definition: nfs41_types.h:145
#define NFS4_STATEID_OTHER
Definition: nfs41_const.h:33
uint32_t seqid
Definition: nfs41_types.h:144
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239

◆ info_to_fattr4()

static bool_t info_to_fattr4 ( nfs41_file_info info,
fattr4 fattr 
)
static

Definition at line 261 of file callback_xdr.c.

Referenced by op_cb_getattr_res().

262 {
263  XDR fattr_xdr;
264  bool_t result = TRUE;
265 
266  /* encode nfs41_file_info into fattr4 */
267  xdrmem_create(&fattr_xdr, (char*)fattr->attr_vals,
269 
270  /* The only attributes that the server can reliably
271  * query via CB_GETATTR are size and change. */
272  if (bitmap_isset(&info->attrmask, 0, FATTR4_WORD0_CHANGE)) {
273  result = xdr_u_hyper(&fattr_xdr, &info->change);
274  if (!result) { CBX_ERR("getattr.info.change"); goto out; }
276  }
277  if (bitmap_isset(&info->attrmask, 0, FATTR4_WORD0_SIZE)) {
278  result = xdr_u_hyper(&fattr_xdr, &info->size);
279  if (!result) { CBX_ERR("getattr.info.size"); goto out; }
281  }
282  fattr->attr_vals_len = xdr_getpos(&fattr_xdr);
283 out:
284  return result;
285 }
#define xdr_getpos(xdrs)
Definition: xdr.h:201
#define TRUE
Definition: types.h:120
static __inline void bitmap_set(IN bitmap4 *mask, IN uint32_t word, IN uint32_t flag)
Definition: util.h:62
bool_t xdr_u_hyper(XDR *xdrs, u_longlong_t *ullp)
Definition: xdr.c:878
unsigned char attr_vals[NFS4_OPAQUE_LIMIT]
Definition: nfs41_types.h:162
int32_t bool_t
Definition: types.h:101
Definition: xdr.h:103
bitmap4 attrmask
Definition: nfs41_types.h:160
#define NFS4_OPAQUE_LIMIT
Definition: nfs41_const.h:31
static FILE * out
Definition: regtests2xml.c:44
uint32_t attr_vals_len
Definition: nfs41_types.h:161
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
Definition: xdr.h:85
void xdrmem_create(XDR *xdrs, char *addr, u_int size, enum xdr_op op)
Definition: xdr_mem.c:94
GLuint64EXT * result
Definition: glext.h:11304
static __inline bool_t bitmap_isset(IN const bitmap4 *mask, IN uint32_t word, IN uint32_t flag)
Definition: util.h:55

◆ op_cb_getattr_args()

static bool_t op_cb_getattr_args ( XDR xdr,
struct cb_getattr_args args 
)
static

Definition at line 248 of file callback_xdr.c.

249 {
250  bool_t result;
251 
252  result = common_fh(xdr, &args->fh);
253  if (!result) { CBX_ERR("getattr.fh"); goto out; }
254 
255  result = xdr_bitmap4(xdr, &args->attr_request);
256  if (!result) { CBX_ERR("getattr.attr_request"); goto out; }
257 out:
258  return result;
259 }
static bool_t common_fh(XDR *xdr, nfs41_fh *fh)
Definition: callback_xdr.c:45
int32_t bool_t
Definition: types.h:101
bool_t xdr_bitmap4(XDR *xdr, bitmap4 *bitmap)
Definition: nfs41_xdr.c:48
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_getattr_res()

static bool_t op_cb_getattr_res ( XDR xdr,
struct cb_getattr_res res 
)
static

Definition at line 287 of file callback_xdr.c.

288 {
289  bool_t result;
290 
291  result = xdr_enum(xdr, &res->status);
292  if (!result) { CBX_ERR("getattr.status"); goto out; }
293 
294  if (res->status == NFS4_OK) {
295  fattr4 fattr = { 0 };
296 
297  result = info_to_fattr4(&res->info, &fattr);
298  if (!result) { goto out; }
299 
300  result = xdr_fattr4(xdr, &fattr);
301  if (!result) { CBX_ERR("getattr.obj_attributes"); goto out; }
302  }
303 out:
304  return result;
305 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_fattr4(XDR *xdr, fattr4 *fattr)
Definition: nfs41_xdr.c:144
Definition: fatfs.h:133
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
static bool_t info_to_fattr4(nfs41_file_info *info, fattr4 *fattr)
Definition: callback_xdr.c:261
GLuint64EXT * result
Definition: glext.h:11304
nfs41_file_info info

◆ op_cb_layoutrecall_args()

static bool_t op_cb_layoutrecall_args ( XDR xdr,
struct cb_layoutrecall_args args 
)
static

Definition at line 101 of file callback_xdr.c.

102 {
103  bool_t result;
104 
105  result = xdr_enum(xdr, (enum_t*)&args->type);
106  if (!result) { CBX_ERR("layoutrecall_args.type"); goto out; }
107 
108  result = xdr_enum(xdr, (enum_t*)&args->iomode);
109  if (!result) { CBX_ERR("layoutrecall_args.iomode"); goto out; }
110 
111  result = xdr_bool(xdr, &args->changed);
112  if (!result) { CBX_ERR("layoutrecall_args.changed"); goto out; }
113 
114  result = xdr_union(xdr, (enum_t*)&args->recall.type,
115  (char*)&args->recall.args, cb_layoutrecall_discrim, NULL_xdrproc_t);
116  if (!result) { CBX_ERR("layoutrecall_args.recall"); goto out; }
117 out:
118  return result;
119 }
struct cb_recall recall
int32_t bool_t
Definition: types.h:101
bool_t xdr_union(XDR *xdrs, enum_t *dscmp, char *unp, const struct xdr_discrim *choices, xdrproc_t dfault)
Definition: xdr.c:629
static const struct xdr_discrim cb_layoutrecall_discrim[]
Definition: callback_xdr.c:94
enum pnfs_return_type type
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
#define NULL_xdrproc_t
Definition: xdr.h:246
static FILE * out
Definition: regtests2xml.c:44
int32_t enum_t
Definition: types.h:102
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
enum pnfs_iomode iomode
bool_t xdr_bool(XDR *xdrs, bool_t *bp)
Definition: xdr.c:428
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_layoutrecall_file()

static bool_t op_cb_layoutrecall_file ( XDR xdr,
struct cb_recall_file args 
)
static

Definition at line 65 of file callback_xdr.c.

66 {
67  bool_t result;
68 
69  result = common_fh(xdr, &args->fh);
70  if (!result) { CBX_ERR("layoutrecall_file.fh"); goto out; }
71 
72  result = xdr_u_int64_t(xdr, &args->offset);
73  if (!result) { CBX_ERR("layoutrecall_file.offset"); goto out; }
74 
75  result = xdr_u_int64_t(xdr, &args->length);
76  if (!result) { CBX_ERR("layoutrecall_file.length"); goto out; }
77 
78  result = common_stateid(xdr, &args->stateid);
79  if (!result) { CBX_ERR("layoutrecall_file.stateid"); goto out; }
80 out:
81  return result;
82 }
static bool_t common_stateid(XDR *xdr, stateid4 *stateid)
Definition: callback_xdr.c:39
static bool_t common_fh(XDR *xdr, nfs41_fh *fh)
Definition: callback_xdr.c:45
int32_t bool_t
Definition: types.h:101
stateid4 stateid
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int64_t(XDR *xdrs, u_int64_t *ullp)
Definition: xdr.c:828
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_layoutrecall_fsid()

static bool_t op_cb_layoutrecall_fsid ( XDR xdr,
union cb_recall_file_args args 
)
static

Definition at line 84 of file callback_xdr.c.

85 {
86  bool_t result;
87 
88  result = common_fsid(xdr, &args->fsid);
89  if (!result) { CBX_ERR("layoutrecall_fsid.fsid"); goto out; }
90 out:
91  return result;
92 }
int32_t bool_t
Definition: types.h:101
static bool_t common_fsid(XDR *xdr, nfs41_fsid *fsid)
Definition: callback_xdr.c:52
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_layoutrecall_res()

static bool_t op_cb_layoutrecall_res ( XDR xdr,
struct cb_layoutrecall_res res 
)
static

Definition at line 121 of file callback_xdr.c.

122 {
123  bool_t result;
124 
125  result = xdr_enum(xdr, &res->status);
126  if (!result) { CBX_ERR("layoutrecall_res.status"); goto out; }
127 out:
128  return result;
129 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_notify_args()

static bool_t op_cb_notify_args ( XDR xdr,
struct cb_notify_args res 
)
static

Definition at line 335 of file callback_xdr.c.

336 {
337  bool_t result;
338 
339  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
340  if (!result) { CBX_ERR("notify.target_highest_slotid"); goto out; }
341 out:
342  return result;
343 }
int32_t bool_t
Definition: types.h:101
uint32_t target_highest_slotid
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_notify_deviceid_args()

static bool_t op_cb_notify_deviceid_args ( XDR xdr,
struct cb_notify_deviceid_args args 
)
static

Definition at line 490 of file callback_xdr.c.

491 {
492  XDR notify_xdr;
493  uint32_t i, j, c;
494  bool_t result;
495 
496  /* decode the generic notify4 list */
497  result = xdr_array(xdr, (char**)&args->notify_list,
499  sizeof(struct notify4), (xdrproc_t)common_notify4);
500  if (!result) { CBX_ERR("notify_deviceid.notify_list"); goto out; }
501 
502  switch (xdr->x_op) {
503  case XDR_FREE:
504  free(args->change_list);
505  case XDR_ENCODE:
506  return TRUE;
507  }
508 
509  /* count the number of device changes */
510  args->change_count = 0;
511  for (i = 0; i < args->notify_count; i++)
512  args->change_count += args->notify_list[i].mask.count;
513 
514  args->change_list = calloc(args->change_count, sizeof(struct notify_deviceid4));
515  if (args->change_list == NULL)
516  return FALSE;
517 
518  c = 0;
519  for (i = 0; i < args->notify_count; i++) {
520  struct notify4 *notify = &args->notify_list[i];
521 
522  /* decode the device notifications out of the opaque buffer */
523  xdrmem_create(&notify_xdr, notify->list, notify->len, XDR_DECODE);
524 
525  for (j = 0; j < notify->mask.count; j++) {
526  struct notify_deviceid4 *change = &args->change_list[c++];
527  change->type = notify->mask.arr[j];
528 
529  switch (change->type) {
531  result = cb_notify_deviceid_change(&notify_xdr, change);
532  if (!result) { CBX_ERR("notify_deviceid.change"); goto out; }
533  break;
535  result = cb_notify_deviceid_delete(&notify_xdr, change);
536  if (!result) { CBX_ERR("notify_deviceid.delete"); goto out; }
537  break;
538  }
539  }
540  }
541 out:
542  return result;
543 }
bool_t xdr_array(XDR *xdrs, caddr_t *addrp, u_int *sizep, u_int maxsize, u_int elsize, xdrproc_t elproc)
Definition: xdr_array.c:61
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean GLenum GLenum GLint GLsizei GLenum GLsizei GLenum const GLvoid GLboolean const GLboolean GLenum const GLdouble const GLfloat const GLdouble const GLfloat GLenum GLint GLint GLint GLint GLint GLint j
Definition: glfuncs.h:98
#define TRUE
Definition: types.h:120
int32_t bool_t
Definition: types.h:101
uint32_t len
#define free
Definition: debug_ros.c:5
int notify
Definition: msacm.c:1353
uint32_t arr[3]
Definition: nfs41_types.h:97
Definition: xdr.h:103
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
GLenum GLclampf GLint i
Definition: glfuncs.h:14
uint32_t count
Definition: nfs41_types.h:96
smooth NULL
Definition: ftsmooth.c:416
static bool_t common_notify4(XDR *xdr, struct notify4 *notify)
Definition: callback_xdr.c:58
static bool_t cb_notify_deviceid_delete(XDR *xdr, struct notify_deviceid4 *change)
Definition: callback_xdr.c:477
enum xdr_op x_op
Definition: xdr.h:104
static FILE * out
Definition: regtests2xml.c:44
struct notify_deviceid4 * change_list
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
Definition: xdr.h:85
#define CB_COMPOUND_MAX_OPERATIONS
void xdrmem_create(XDR *xdrs, char *addr, u_int size, enum xdr_op op)
Definition: xdr_mem.c:94
UINT32 uint32_t
Definition: types.h:75
struct notify4 * notify_list
static bool_t cb_notify_deviceid_change(XDR *xdr, struct notify_deviceid4 *change)
Definition: callback_xdr.c:461
Definition: xdr.h:87
#define calloc
Definition: rosglue.h:14
#define c
Definition: ke_i.h:80
Definition: xdr.h:86
GLuint64EXT * result
Definition: glext.h:11304
bitmap4 mask
enum notify_deviceid_type4 type
char * list

◆ op_cb_notify_deviceid_res()

static bool_t op_cb_notify_deviceid_res ( XDR xdr,
struct cb_notify_deviceid_res res 
)
static

Definition at line 545 of file callback_xdr.c.

546 {
547  bool_t result;
548 
549  result = xdr_enum(xdr, &res->status);
550  if (!result) { CBX_ERR("notify_deviceid.status"); goto out; }
551 out:
552  return result;
553 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_notify_lock_args()

static bool_t op_cb_notify_lock_args ( XDR xdr,
struct cb_notify_lock_args res 
)
static

Definition at line 440 of file callback_xdr.c.

441 {
442  bool_t result;
443 
444  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
445  if (!result) { CBX_ERR("notify_lock.target_highest_slotid"); goto out; }
446 out:
447  return result;
448 }
int32_t bool_t
Definition: types.h:101
uint32_t target_highest_slotid
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_notify_lock_res()

static bool_t op_cb_notify_lock_res ( XDR xdr,
struct cb_notify_lock_res res 
)
static

Definition at line 450 of file callback_xdr.c.

451 {
452  bool_t result;
453 
454  result = xdr_enum(xdr, &res->status);
455  if (!result) { CBX_ERR("notify_lock.status"); goto out; }
456 out:
457  return result;
458 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_notify_res()

static bool_t op_cb_notify_res ( XDR xdr,
struct cb_notify_res res 
)
static

Definition at line 345 of file callback_xdr.c.

346 {
347  bool_t result;
348 
349  result = xdr_enum(xdr, &res->status);
350  if (!result) { CBX_ERR("notify.status"); goto out; }
351 out:
352  return result;
353 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_push_deleg_args()

static bool_t op_cb_push_deleg_args ( XDR xdr,
struct cb_push_deleg_args res 
)
static

Definition at line 356 of file callback_xdr.c.

357 {
358  bool_t result;
359 
360  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
361  if (!result) { CBX_ERR("push_deleg.target_highest_slotid"); goto out; }
362 out:
363  return result;
364 }
int32_t bool_t
Definition: types.h:101
uint32_t target_highest_slotid
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_push_deleg_res()

static bool_t op_cb_push_deleg_res ( XDR xdr,
struct cb_push_deleg_res res 
)
static

Definition at line 366 of file callback_xdr.c.

367 {
368  bool_t result;
369 
370  result = xdr_enum(xdr, &res->status);
371  if (!result) { CBX_ERR("push_deleg.status"); goto out; }
372 out:
373  return result;
374 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recall_any_args()

static bool_t op_cb_recall_any_args ( XDR xdr,
struct cb_recall_any_args res 
)
static

Definition at line 377 of file callback_xdr.c.

378 {
379  bool_t result;
380 
381  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
382  if (!result) { CBX_ERR("recall_any.target_highest_slotid"); goto out; }
383 out:
384  return result;
385 }
int32_t bool_t
Definition: types.h:101
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
uint32_t target_highest_slotid
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recall_any_res()

static bool_t op_cb_recall_any_res ( XDR xdr,
struct cb_recall_any_res res 
)
static

Definition at line 387 of file callback_xdr.c.

388 {
389  bool_t result;
390 
391  result = xdr_enum(xdr, &res->status);
392  if (!result) { CBX_ERR("recall_any.status"); goto out; }
393 out:
394  return result;
395 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recall_args()

static bool_t op_cb_recall_args ( XDR xdr,
struct cb_recall_args args 
)
static

Definition at line 308 of file callback_xdr.c.

309 {
310  bool_t result;
311 
312  result = common_stateid(xdr, &args->stateid);
313  if (!result) { CBX_ERR("recall.stateid"); goto out; }
314 
315  result = xdr_bool(xdr, &args->truncate);
316  if (!result) { CBX_ERR("recall.truncate"); goto out; }
317 
318  result = common_fh(xdr, &args->fh);
319  if (!result) { CBX_ERR("recall.fh"); goto out; }
320 out:
321  return result;
322 }
static bool_t common_stateid(XDR *xdr, stateid4 *stateid)
Definition: callback_xdr.c:39
static bool_t common_fh(XDR *xdr, nfs41_fh *fh)
Definition: callback_xdr.c:45
int32_t bool_t
Definition: types.h:101
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_bool(XDR *xdrs, bool_t *bp)
Definition: xdr.c:428
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recall_res()

static bool_t op_cb_recall_res ( XDR xdr,
struct cb_recall_res res 
)
static

Definition at line 324 of file callback_xdr.c.

325 {
326  bool_t result;
327 
328  result = xdr_enum(xdr, &res->status);
329  if (!result) { CBX_ERR("recall.status"); goto out; }
330 out:
331  return result;
332 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recall_slot_args()

static bool_t op_cb_recall_slot_args ( XDR xdr,
struct cb_recall_slot_args res 
)
static

Definition at line 133 of file callback_xdr.c.

134 {
135  bool_t result;
136 
137  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
138  if (!result) { CBX_ERR("recall_slot.target_highest_slotid"); goto out; }
139 out:
140  return result;
141 }
int32_t bool_t
Definition: types.h:101
uint32_t target_highest_slotid
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recall_slot_res()

static bool_t op_cb_recall_slot_res ( XDR xdr,
struct cb_recall_slot_res res 
)
static

Definition at line 143 of file callback_xdr.c.

144 {
145  bool_t result;
146 
147  result = xdr_enum(xdr, &res->status);
148  if (!result) { CBX_ERR("recall_slot.status"); goto out; }
149 out:
150  return result;
151 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recallable_obj_avail_args()

static bool_t op_cb_recallable_obj_avail_args ( XDR xdr,
struct cb_recallable_obj_avail_args res 
)
static

Definition at line 398 of file callback_xdr.c.

399 {
400  bool_t result;
401 
402  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
403  if (!result) { CBX_ERR("recallable_obj_avail.target_highest_slotid"); goto out; }
404 out:
405  return result;
406 }
int32_t bool_t
Definition: types.h:101
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_recallable_obj_avail_res()

static bool_t op_cb_recallable_obj_avail_res ( XDR xdr,
struct cb_recallable_obj_avail_res res 
)
static

Definition at line 408 of file callback_xdr.c.

409 {
410  bool_t result;
411 
412  result = xdr_enum(xdr, &res->status);
413  if (!result) { CBX_ERR("recallable_obj_avail.status"); goto out; }
414 out:
415  return result;
416 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_sequence_args()

static bool_t op_cb_sequence_args ( XDR xdr,
struct cb_sequence_args args 
)
static

Definition at line 182 of file callback_xdr.c.

183 {
184  bool_t result;
185 
186  result = xdr_opaque(xdr, args->sessionid, NFS4_SESSIONID_SIZE);
187  if (!result) { CBX_ERR("sequence_args.sessionid"); goto out; }
188 
189  result = xdr_u_int32_t(xdr, &args->sequenceid);
190  if (!result) { CBX_ERR("sequence_args.sequenceid"); goto out; }
191 
192  result = xdr_u_int32_t(xdr, &args->slotid);
193  if (!result) { CBX_ERR("sequence_args.slotid"); goto out; }
194 
195  result = xdr_u_int32_t(xdr, &args->highest_slotid);
196  if (!result) { CBX_ERR("sequence_args.highest_slotid"); goto out; }
197 
198  result = xdr_bool(xdr, &args->cachethis);
199  if (!result) { CBX_ERR("sequence_args.cachethis"); goto out; }
200 
201  result = xdr_array(xdr, (char**)&args->ref_lists,
202  &args->ref_list_count, 64, sizeof(struct cb_sequence_ref_list),
204  if (!result) { CBX_ERR("sequence_args.ref_lists"); goto out; }
205 out:
206  return result;
207 }
bool_t xdr_array(XDR *xdrs, caddr_t *addrp, u_int *sizep, u_int maxsize, u_int elsize, xdrproc_t elproc)
Definition: xdr_array.c:61
#define NFS4_SESSIONID_SIZE
Definition: nfs41_const.h:32
int32_t bool_t
Definition: types.h:101
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
struct cb_sequence_ref_list * ref_lists
static FILE * out
Definition: regtests2xml.c:44
char sessionid[NFS4_SESSIONID_SIZE]
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
bool_t xdr_bool(XDR *xdrs, bool_t *bp)
Definition: xdr.c:428
uint32_t ref_list_count
uint32_t highest_slotid
static bool_t op_cb_sequence_ref_list(XDR *xdr, struct cb_sequence_ref_list *args)
Definition: callback_xdr.c:168
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_sequence_ref()

static bool_t op_cb_sequence_ref ( XDR xdr,
struct cb_sequence_ref args 
)
static

Definition at line 155 of file callback_xdr.c.

Referenced by op_cb_sequence_ref_list().

156 {
157  bool_t result;
158 
159  result = xdr_u_int32_t(xdr, &args->sequenceid);
160  if (!result) { CBX_ERR("sequence_ref.sequenceid"); goto out; }
161 
162  result = xdr_u_int32_t(xdr, &args->slotid);
163  if (!result) { CBX_ERR("sequence_ref.slotid"); goto out; }
164 out:
165  return result;
166 }
int32_t bool_t
Definition: types.h:101
static FILE * out
Definition: regtests2xml.c:44
uint32_t sequenceid
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_sequence_ref_list()

static bool_t op_cb_sequence_ref_list ( XDR xdr,
struct cb_sequence_ref_list args 
)
static

Definition at line 168 of file callback_xdr.c.

Referenced by op_cb_sequence_args().

169 {
170  bool_t result;
171 
172  result = xdr_opaque(xdr, args->sessionid, NFS4_SESSIONID_SIZE);
173  if (!result) { CBX_ERR("sequence_ref_list.sessionid"); goto out; }
174 
175  result = xdr_array(xdr, (char**)&args->calls, &args->call_count,
176  64, sizeof(struct cb_sequence_ref), (xdrproc_t)op_cb_sequence_ref);
177  if (!result) { CBX_ERR("sequence_ref_list.calls"); goto out; }
178 out:
179  return result;
180 }
bool_t xdr_array(XDR *xdrs, caddr_t *addrp, u_int *sizep, u_int maxsize, u_int elsize, xdrproc_t elproc)
Definition: xdr_array.c:61
#define NFS4_SESSIONID_SIZE
Definition: nfs41_const.h:32
int32_t bool_t
Definition: types.h:101
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
char sessionid[NFS4_SESSIONID_SIZE]
static bool_t op_cb_sequence_ref(XDR *xdr, struct cb_sequence_ref *args)
Definition: callback_xdr.c:155
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
struct cb_sequence_ref * calls
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_sequence_res()

static bool_t op_cb_sequence_res ( XDR xdr,
struct cb_sequence_res res 
)
static

Definition at line 236 of file callback_xdr.c.

237 {
238  bool_t result;
239 
240  result = xdr_union(xdr, &res->status, (char*)&res->ok,
242  if (!result) { CBX_ERR("seq:argop.args"); goto out; }
243 out:
244  return result;
245 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_union(XDR *xdrs, enum_t *dscmp, char *unp, const struct xdr_discrim *choices, xdrproc_t dfault)
Definition: xdr.c:629
struct cb_sequence_res_ok ok
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_void(void)
Definition: xdr.c:92
static const struct xdr_discrim cb_sequence_res_discrim[]
Definition: callback_xdr.c:231
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_sequence_res_ok()

static bool_t op_cb_sequence_res_ok ( XDR xdr,
struct cb_sequence_res_ok res 
)
static

Definition at line 209 of file callback_xdr.c.

210 {
211  bool_t result;
212 
213  result = xdr_opaque(xdr, res->sessionid, NFS4_SESSIONID_SIZE);
214  if (!result) { CBX_ERR("sequence_res.sessionid"); goto out; }
215 
216  result = xdr_u_int32_t(xdr, &res->sequenceid);
217  if (!result) { CBX_ERR("sequence_res.sequenceid"); goto out; }
218 
219  result = xdr_u_int32_t(xdr, &res->slotid);
220  if (!result) { CBX_ERR("sequence_res.slotid"); goto out; }
221 
222  result = xdr_u_int32_t(xdr, &res->highest_slotid);
223  if (!result) { CBX_ERR("sequence_res.highest_slotid"); goto out; }
224 
225  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
226  if (!result) { CBX_ERR("sequence_res.target_highest_slotid"); goto out; }
227 out:
228  return result;
229 }
#define NFS4_SESSIONID_SIZE
Definition: nfs41_const.h:32
int32_t bool_t
Definition: types.h:101
char sessionid[NFS4_SESSIONID_SIZE]
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_opaque(XDR *xdrs, caddr_t cp, u_int cnt)
Definition: xdr.c:484
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
uint32_t target_highest_slotid
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_wants_cancelled_args()

static bool_t op_cb_wants_cancelled_args ( XDR xdr,
struct cb_wants_cancelled_args res 
)
static

Definition at line 419 of file callback_xdr.c.

420 {
421  bool_t result;
422 
423  result = xdr_u_int32_t(xdr, &res->target_highest_slotid);
424  if (!result) { CBX_ERR("wants_cancelled.target_highest_slotid"); goto out; }
425 out:
426  return result;
427 }
int32_t bool_t
Definition: types.h:101
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
GLuint64EXT * result
Definition: glext.h:11304

◆ op_cb_wants_cancelled_res()

static bool_t op_cb_wants_cancelled_res ( XDR xdr,
struct cb_wants_cancelled_res res 
)
static

Definition at line 429 of file callback_xdr.c.

430 {
431  bool_t result;
432 
433  result = xdr_enum(xdr, &res->status);
434  if (!result) { CBX_ERR("wants_cancelled.status"); goto out; }
435 out:
436  return result;
437 }
int32_t bool_t
Definition: types.h:101
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
GLuint64EXT * result
Definition: glext.h:11304

◆ proc_cb_compound_args()

bool_t proc_cb_compound_args ( XDR xdr,
struct cb_compound_args args 
)

Definition at line 590 of file callback_xdr.c.

Referenced by handle_cb_compound(), replay_cache_write(), and replay_validate_args().

591 {
592  bool_t result;
593 
594  result = cb_compound_tag(xdr, &args->tag);
595  if (!result) { CBX_ERR("compound.tag"); goto out; }
596 
597  result = xdr_u_int32_t(xdr, &args->minorversion);
598  if (!result) { CBX_ERR("compound.minorversion"); goto out; }
599 
600  /* "superfluous in NFSv4.1 and MUST be ignored by the client" */
601  result = xdr_u_int32_t(xdr, &args->callback_ident);
602  if (!result) { CBX_ERR("compound.callback_ident"); goto out; }
603 
604  result = xdr_array(xdr, (char**)&args->argarray,
606  sizeof(struct cb_argop), (xdrproc_t)cb_compound_argop);
607  if (!result) { CBX_ERR("compound.argarray"); goto out; }
608 out:
609  return result;
610 }
bool_t xdr_array(XDR *xdrs, caddr_t *addrp, u_int *sizep, u_int maxsize, u_int elsize, xdrproc_t elproc)
Definition: xdr_array.c:61
int32_t bool_t
Definition: types.h:101
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
uint32_t callback_ident
static bool_t cb_compound_tag(XDR *xdr, struct cb_compound_tag *args)
Definition: callback_xdr.c:556
static FILE * out
Definition: regtests2xml.c:44
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
static bool_t cb_compound_argop(XDR *xdr, struct cb_argop *args)
Definition: callback_xdr.c:579
#define CB_COMPOUND_MAX_OPERATIONS
struct cb_argop * argarray
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
uint32_t argarray_count
GLuint64EXT * result
Definition: glext.h:11304
struct cb_compound_tag tag

◆ proc_cb_compound_res()

bool_t proc_cb_compound_res ( XDR xdr,
struct cb_compound_res res 
)

Definition at line 638 of file callback_xdr.c.

Referenced by get_client_for_netaddr(), replay_cache_read(), and replay_cache_write().

639 {
640  bool_t result;
641 
642  if (res == NULL)
643  return TRUE;
644 
645  result = xdr_enum(xdr, &res->status);
646  if (!result) { CBX_ERR("compound_res.status"); goto out; }
647 
648  result = cb_compound_tag(xdr, &res->tag);
649  if (!result) { CBX_ERR("compound_res.tag"); goto out; }
650 
651  result = xdr_array(xdr, (char**)&res->resarray,
653  sizeof(struct cb_resop), (xdrproc_t)cb_compound_resop);
654  if (!result) { CBX_ERR("compound_res.resarray"); goto out; }
655 out:
656  if (xdr->x_op == XDR_FREE)
657  free(res);
658  return result;
659 }
bool_t xdr_array(XDR *xdrs, caddr_t *addrp, u_int *sizep, u_int maxsize, u_int elsize, xdrproc_t elproc)
Definition: xdr_array.c:61
#define TRUE
Definition: types.h:120
struct cb_resop * resarray
int32_t bool_t
Definition: types.h:101
#define free
Definition: debug_ros.c:5
struct cb_compound_tag tag
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
smooth NULL
Definition: ftsmooth.c:416
static bool_t cb_compound_tag(XDR *xdr, struct cb_compound_tag *args)
Definition: callback_xdr.c:556
bool_t xdr_enum(XDR *xdrs, enum_t *ep)
Definition: xdr.c:458
enum xdr_op x_op
Definition: xdr.h:104
static FILE * out
Definition: regtests2xml.c:44
static bool_t cb_compound_resop(XDR *xdr, struct cb_resop *res)
Definition: callback_xdr.c:628
#define CBX_ERR(msg)
Definition: callback_xdr.c:32
uint32_t resarray_count
#define CB_COMPOUND_MAX_OPERATIONS
Definition: xdr.h:87
GLuint64EXT * result
Definition: glext.h:11304

◆ xdr_bitmap4()

bool_t xdr_bitmap4 ( XDR xdr,
bitmap4 bitmap 
)

Definition at line 48 of file nfs41_xdr.c.

Referenced by common_notify4(), decode_file_attrs(), decode_getdeviceinfo_ok(), decode_op_create(), decode_op_setattr(), decode_open_res_ok(), encode_op_exchange_id(), encode_op_getattr(), encode_op_getdeviceinfo(), encode_op_readdir(), op_cb_getattr_args(), xdr_client_owner4(), xdr_fattr4(), and xdr_threshold_item().

51 {
52  uint32_t i;
53 
54  if (xdr->x_op == XDR_ENCODE) {
55  if (bitmap->count > 3) {
56  eprintf("encode_bitmap4: count (%d) must be <= 3\n",
57  bitmap->count);
58  return FALSE;
59  }
60  if (!xdr_u_int32_t(xdr, &bitmap->count))
61  return FALSE;
62 
63  for (i = 0; i < bitmap->count; i++)
64  if (!xdr_u_int32_t(xdr, &bitmap->arr[i]))
65  return FALSE;
66 
67  } else if (xdr->x_op == XDR_DECODE) {
68  if (!xdr_u_int32_t(xdr, &bitmap->count))
69  return FALSE;
70  if (bitmap->count > 3) {
71  eprintf("decode_bitmap4: count (%d) must be <= 3\n",
72  bitmap->count);
73  return FALSE;
74  }
75 
76  for (i = 0; i < bitmap->count; i++)
77  if (!xdr_u_int32_t(xdr, &bitmap->arr[i]))
78  return FALSE;
79  } else
80  return FALSE;
81 
82  return TRUE;
83 }
#define TRUE
Definition: types.h:120
void eprintf(LPCSTR format,...)
Definition: daemon_debug.c:86
uint32_t arr[3]
Definition: nfs41_types.h:97
GLenum GLclampf GLint i
Definition: glfuncs.h:14
uint32_t count
Definition: nfs41_types.h:96
enum xdr_op x_op
Definition: xdr.h:104
Definition: xdr.h:85
bool_t xdr_u_int32_t(XDR *xdrs, u_int32_t *u_int32_p)
Definition: xdr.c:239
UINT32 uint32_t
Definition: types.h:75
Definition: xdr.h:86

◆ xdr_fattr4()

bool_t xdr_fattr4 ( XDR xdr,
fattr4 fattr 
)

Definition at line 144 of file nfs41_xdr.c.

Referenced by decode_op_getattr(), decode_readdir_entry(), encode_createattrs4(), encode_op_setattr(), and op_cb_getattr_res().

147 {
148  unsigned char *attr_vals = fattr->attr_vals;
149 
150  if (!xdr_bitmap4(xdr, &fattr->attrmask))
151  return FALSE;
152 
153  return xdr_bytes(xdr, (char **)&attr_vals, &fattr->attr_vals_len, NFS4_OPAQUE_LIMIT);
154 }
unsigned char attr_vals[NFS4_OPAQUE_LIMIT]
Definition: nfs41_types.h:162
bitmap4 attrmask
Definition: nfs41_types.h:160
#define NFS4_OPAQUE_LIMIT
Definition: nfs41_const.h:31
bool_t xdr_bitmap4(XDR *xdr, bitmap4 *bitmap)
Definition: nfs41_xdr.c:48
uint32_t attr_vals_len
Definition: nfs41_types.h:161
bool_t xdr_bytes(XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize)
Definition: xdr.c:536

Variable Documentation

◆ cb_argop_discrim

const struct xdr_discrim cb_argop_discrim[]
static
Initial value:
= {
}
static bool_t op_cb_wants_cancelled_args(XDR *xdr, struct cb_wants_cancelled_args *res)
Definition: callback_xdr.c:419
static bool_t op_cb_recall_args(XDR *xdr, struct cb_recall_args *args)
Definition: callback_xdr.c:308
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
static bool_t op_cb_sequence_args(XDR *xdr, struct cb_sequence_args *args)
Definition: callback_xdr.c:182
static bool_t op_cb_layoutrecall_args(XDR *xdr, struct cb_layoutrecall_args *args)
Definition: callback_xdr.c:101
static bool_t op_cb_notify_deviceid_args(XDR *xdr, struct cb_notify_deviceid_args *args)
Definition: callback_xdr.c:490
static bool_t op_cb_recall_slot_args(XDR *xdr, struct cb_recall_slot_args *res)
Definition: callback_xdr.c:133
#define NULL_xdrproc_t
Definition: xdr.h:246
static bool_t op_cb_notify_lock_args(XDR *xdr, struct cb_notify_lock_args *res)
Definition: callback_xdr.c:440
static bool_t op_cb_getattr_args(XDR *xdr, struct cb_getattr_args *args)
Definition: callback_xdr.c:248
static bool_t op_cb_recall_any_args(XDR *xdr, struct cb_recall_any_args *res)
Definition: callback_xdr.c:377
static bool_t op_cb_recallable_obj_avail_args(XDR *xdr, struct cb_recallable_obj_avail_args *res)
Definition: callback_xdr.c:398
static bool_t op_cb_notify_args(XDR *xdr, struct cb_notify_args *res)
Definition: callback_xdr.c:335
static bool_t op_cb_push_deleg_args(XDR *xdr, struct cb_push_deleg_args *res)
Definition: callback_xdr.c:356

Definition at line 563 of file callback_xdr.c.

◆ cb_layoutrecall_discrim

const struct xdr_discrim cb_layoutrecall_discrim[]
static
Initial value:
= {
}
static bool_t op_cb_layoutrecall_file(XDR *xdr, struct cb_recall_file *args)
Definition: callback_xdr.c:65
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
#define NULL_xdrproc_t
Definition: xdr.h:246
bool_t xdr_void(void)
Definition: xdr.c:92
static bool_t op_cb_layoutrecall_fsid(XDR *xdr, union cb_recall_file_args *args)
Definition: callback_xdr.c:84

Definition at line 94 of file callback_xdr.c.

◆ cb_resop_discrim

const struct xdr_discrim cb_resop_discrim[]
static
Initial value:
= {
}
static bool_t op_cb_recall_slot_res(XDR *xdr, struct cb_recall_slot_res *res)
Definition: callback_xdr.c:143
static bool_t op_cb_getattr_res(XDR *xdr, struct cb_getattr_res *res)
Definition: callback_xdr.c:287
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
static bool_t op_cb_wants_cancelled_res(XDR *xdr, struct cb_wants_cancelled_res *res)
Definition: callback_xdr.c:429
static bool_t op_cb_notify_deviceid_res(XDR *xdr, struct cb_notify_deviceid_res *res)
Definition: callback_xdr.c:545
static bool_t op_cb_layoutrecall_res(XDR *xdr, struct cb_layoutrecall_res *res)
Definition: callback_xdr.c:121
static bool_t op_cb_notify_lock_res(XDR *xdr, struct cb_notify_lock_res *res)
Definition: callback_xdr.c:450
#define NULL_xdrproc_t
Definition: xdr.h:246
static bool_t op_cb_sequence_res(XDR *xdr, struct cb_sequence_res *res)
Definition: callback_xdr.c:236
static bool_t op_cb_recall_any_res(XDR *xdr, struct cb_recall_any_res *res)
Definition: callback_xdr.c:387
static bool_t op_cb_recall_res(XDR *xdr, struct cb_recall_res *res)
Definition: callback_xdr.c:324
static bool_t op_cb_recallable_obj_avail_res(XDR *xdr, struct cb_recallable_obj_avail_res *res)
Definition: callback_xdr.c:408
static bool_t op_cb_push_deleg_res(XDR *xdr, struct cb_push_deleg_res *res)
Definition: callback_xdr.c:366
static bool_t op_cb_notify_res(XDR *xdr, struct cb_notify_res *res)
Definition: callback_xdr.c:345

Definition at line 612 of file callback_xdr.c.

◆ cb_sequence_res_discrim

const struct xdr_discrim cb_sequence_res_discrim[]
static
Initial value:
= {
}
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
#define NULL_xdrproc_t
Definition: xdr.h:246
static bool_t op_cb_sequence_res_ok(XDR *xdr, struct cb_sequence_res_ok *res)
Definition: callback_xdr.c:209

Definition at line 231 of file callback_xdr.c.