summaryrefslogtreecommitdiffstats
path: root/tapset/nfs4ops.stp
blob: c09be6aed318a9579d8eeff8889772e3614c7462 (plain)
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();
%}