1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
%{
#include <linux/fs.h>
#include <linux/socket.h>
#include <net/sock.h>
#include <net/inet_sock.h>
#include <linux/sunrpc/svc.h>
#include <linux/nfs4.h>
#include <linux/nfsd/nfsfh.h>
#include <linux/nfsd/export.h>
#include <linux/nfsd/nfsd.h>
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,33)
#include <linux/nfsd/state.h>
#include <linux/nfsd/xdr4.h>
#endif
%}
function nfs4ops:string(_compars:long)
%{
struct nfsd4_compoundargs *args = (struct nfsd4_compoundargs *)
(long)kread(&(THIS->_compars));
/*
struct nfsd4_op *op = (struct nfsd4_op *) (long)kread(&(args->ops));
*/
struct nfsd4_op *op = args->iops;
char buf[MAXSTRINGLEN];
int cc=0, i;
static struct {
int optnum;
char *optstr;
} nfs4_opttab[] = {
{0, "NULL"},
{1, "COMPOUND"},
{2, "SLOT2"},
{OP_ACCESS, "ACCESS"},
{OP_CLOSE, "CLOSE"},
{OP_COMMIT, "COMMIT"},
{OP_CREATE, "CREATE"},
{OP_DELEGPURGE, "DELEGPURGE"},
{OP_DELEGRETURN, "DELEGRETURN"},
{OP_GETATTR, "GETATTR"},
{OP_GETFH, "GETFH"},
{OP_LINK, "LINK"},
{OP_LOCK, "LOCK"},
{OP_LOCKT, "LOCKT"},
{OP_LOCKU, "LOCKU"},
{OP_LOOKUP, "LOOKUP"},
{OP_LOOKUPP, "LOOKUPP"},
{OP_NVERIFY, "NVERIFY"},
{OP_OPEN, "OPEN"},
{OP_OPENATTR, "OPENATTR"},
{OP_OPEN_CONFIRM, "OPEN_CONFIRM"},
{OP_OPEN_DOWNGRADE, "OPEN_DOWNGRADE"},
{OP_PUTFH, "PUTFH"},
{OP_PUTPUBFH, "PUTPUBFH"},
{OP_PUTROOTFH, "PUTROOTFH"},
{OP_READ, "READ"},
{OP_READDIR, "READDIR"},
{OP_READLINK, "READLINK"},
{OP_REMOVE, "REMOVE"},
{OP_RENAME, "RENAME"},
{OP_RENEW, "RENEW"},
{OP_RESTOREFH, "RESTOREFH"},
{OP_SAVEFH, "SAVEFH"},
{OP_SECINFO, "SECINFO"},
{OP_SETATTR, "SETATTR"},
{OP_SETCLIENTID, "SETCLIENTID"},
{OP_SETCLIENTID_CONFIRM, "SETCLIENTID_CONFIRM"},
{OP_VERIFY, "VERIFY"},
{OP_WRITE, "WRITE"},
{OP_RELEASE_LOCKOWNER, "RELEASE_LOCKOWNER"},
{OP_ILLEGAL, "ILLEGAL"},
};
for (i=0; i < args->opcnt; i++) {
op = &args->ops[i];
sprintf(buf+cc, "%s(%d) ", nfs4_opttab[op->opnum].optstr, op->opnum);
cc = strlen(buf);
}
snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s", buf);
CATCH_DEREF_FAULT();
%}
|