xref: /plan9/sys/src/cmd/cwfs/9p1.h (revision 01a344a29f2ff35133953eaef092a50fc8c3163b)
1*01a344a2SDavid du Colombier #include <authsrv.h>
2*01a344a2SDavid du Colombier 
3*01a344a2SDavid du Colombier enum {
4*01a344a2SDavid du Colombier 	DIRREC	= 116,		/* size of a directory ascii record */
5*01a344a2SDavid du Colombier 	ERRREC	= 64,		/* size of a error record */
6*01a344a2SDavid du Colombier };
7*01a344a2SDavid du Colombier 
8*01a344a2SDavid du Colombier typedef	struct	Fcall	Fcall;
9*01a344a2SDavid du Colombier 
10*01a344a2SDavid du Colombier struct	Fcall
11*01a344a2SDavid du Colombier {
12*01a344a2SDavid du Colombier 	char	type;
13*01a344a2SDavid du Colombier 	ushort	fid;
14*01a344a2SDavid du Colombier 	short	err;
15*01a344a2SDavid du Colombier 	short	tag;
16*01a344a2SDavid du Colombier 	union
17*01a344a2SDavid du Colombier 	{
18*01a344a2SDavid du Colombier 		struct
19*01a344a2SDavid du Colombier 		{
20*01a344a2SDavid du Colombier 			short	uid;		/* T-Userstr [obs.] */
21*01a344a2SDavid du Colombier 			short	oldtag;		/* T-nFlush */
22*01a344a2SDavid du Colombier 			Qid9p1	qid;		/* R-Attach, R-Clwalk, R-Walk,
23*01a344a2SDavid du Colombier 						 * R-Open, R-Create */
24*01a344a2SDavid du Colombier 			char	rauth[AUTHENTLEN];	/* R-attach */
25*01a344a2SDavid du Colombier 		};
26*01a344a2SDavid du Colombier 		struct
27*01a344a2SDavid du Colombier 		{
28*01a344a2SDavid du Colombier 			char	uname[NAMELEN];	/* T-nAttach */
29*01a344a2SDavid du Colombier 			char	aname[NAMELEN];	/* T-nAttach */
30*01a344a2SDavid du Colombier 			char	ticket[TICKETLEN];	/* T-attach */
31*01a344a2SDavid du Colombier 			char	auth[AUTHENTLEN];	/* T-attach */
32*01a344a2SDavid du Colombier 		};
33*01a344a2SDavid du Colombier 		struct
34*01a344a2SDavid du Colombier 		{
35*01a344a2SDavid du Colombier 			char	ename[ERRREC];	/* R-nError */
36*01a344a2SDavid du Colombier 			char	chal[CHALLEN];	/* T-session, R-session */
37*01a344a2SDavid du Colombier 			char	authid[NAMELEN];	/* R-session */
38*01a344a2SDavid du Colombier 			char	authdom[DOMLEN];	/* R-session */
39*01a344a2SDavid du Colombier 		};
40*01a344a2SDavid du Colombier 		struct
41*01a344a2SDavid du Colombier 		{
42*01a344a2SDavid du Colombier 			char	name[NAMELEN];	/* T-Walk, T-Clwalk, T-Create, T-Remove */
43*01a344a2SDavid du Colombier 			long	perm;		/* T-Create */
44*01a344a2SDavid du Colombier 			ushort	newfid;		/* T-Clone, T-Clwalk */
45*01a344a2SDavid du Colombier 			char	mode;		/* T-Create, T-Open */
46*01a344a2SDavid du Colombier 		};
47*01a344a2SDavid du Colombier 		struct
48*01a344a2SDavid du Colombier 		{
49*01a344a2SDavid du Colombier 			Off	offset;		/* T-Read, T-Write */
50*01a344a2SDavid du Colombier 			long	count;		/* T-Read, T-Write, R-Read */
51*01a344a2SDavid du Colombier 			char*	data;		/* T-Write, R-Read */
52*01a344a2SDavid du Colombier 		};
53*01a344a2SDavid du Colombier 		struct
54*01a344a2SDavid du Colombier 		{
55*01a344a2SDavid du Colombier 			char	stat[DIRREC];	/* T-Wstat, R-Stat */
56*01a344a2SDavid du Colombier 		};
57*01a344a2SDavid du Colombier 	};
58*01a344a2SDavid du Colombier };
59*01a344a2SDavid du Colombier 
60*01a344a2SDavid du Colombier /*
61*01a344a2SDavid du Colombier  * P9 protocol message types
62*01a344a2SDavid du Colombier  */
63*01a344a2SDavid du Colombier enum
64*01a344a2SDavid du Colombier {
65*01a344a2SDavid du Colombier 	Tnop =		50,
66*01a344a2SDavid du Colombier 	Rnop,
67*01a344a2SDavid du Colombier 	Tosession =	52,
68*01a344a2SDavid du Colombier 	Rosession,
69*01a344a2SDavid du Colombier 	Terror =	54,	/* illegal */
70*01a344a2SDavid du Colombier 	Rerror,
71*01a344a2SDavid du Colombier 	Tflush =	56,
72*01a344a2SDavid du Colombier 	Rflush,
73*01a344a2SDavid du Colombier 	Toattach =	58,
74*01a344a2SDavid du Colombier 	Roattach,
75*01a344a2SDavid du Colombier 	Tclone =	60,
76*01a344a2SDavid du Colombier 	Rclone,
77*01a344a2SDavid du Colombier 	Twalk =		62,
78*01a344a2SDavid du Colombier 	Rwalk,
79*01a344a2SDavid du Colombier 	Topen =		64,
80*01a344a2SDavid du Colombier 	Ropen,
81*01a344a2SDavid du Colombier 	Tcreate =	66,
82*01a344a2SDavid du Colombier 	Rcreate,
83*01a344a2SDavid du Colombier 	Tread =		68,
84*01a344a2SDavid du Colombier 	Rread,
85*01a344a2SDavid du Colombier 	Twrite =	70,
86*01a344a2SDavid du Colombier 	Rwrite,
87*01a344a2SDavid du Colombier 	Tclunk =	72,
88*01a344a2SDavid du Colombier 	Rclunk,
89*01a344a2SDavid du Colombier 	Tremove =	74,
90*01a344a2SDavid du Colombier 	Rremove,
91*01a344a2SDavid du Colombier 	Tstat =		76,
92*01a344a2SDavid du Colombier 	Rstat,
93*01a344a2SDavid du Colombier 	Twstat =	78,
94*01a344a2SDavid du Colombier 	Rwstat,
95*01a344a2SDavid du Colombier 	Tclwalk =	80,
96*01a344a2SDavid du Colombier 	Rclwalk,
97*01a344a2SDavid du Colombier 	Tauth =		82,	/* illegal */
98*01a344a2SDavid du Colombier 	Rauth,			/* illegal */
99*01a344a2SDavid du Colombier 	Tsession =	84,
100*01a344a2SDavid du Colombier 	Rsession,
101*01a344a2SDavid du Colombier 	Tattach =	86,
102*01a344a2SDavid du Colombier 	Rattach,
103*01a344a2SDavid du Colombier 
104*01a344a2SDavid du Colombier 	MAXSYSCALL
105*01a344a2SDavid du Colombier };
106*01a344a2SDavid du Colombier 
107*01a344a2SDavid du Colombier int	convA2M9p1(Authenticator*, char*, char*);
108*01a344a2SDavid du Colombier void	convM2A9p1(char*, Authenticator*, char*);
109*01a344a2SDavid du Colombier void	convM2T9p1(char*, Ticket*, char*);
110*01a344a2SDavid du Colombier int	convD2M9p1(Dentry*, char*);
111*01a344a2SDavid du Colombier int	convM2D9p1(char*, Dentry*);
112*01a344a2SDavid du Colombier int	convM2S9p1(uchar*, Fcall*, int);
113*01a344a2SDavid du Colombier int	convS2M9p1(Fcall*, uchar*);
114*01a344a2SDavid du Colombier void	fcall9p1(Chan*, Fcall*, Fcall*);
115*01a344a2SDavid du Colombier 
116*01a344a2SDavid du Colombier void	(*call9p1[MAXSYSCALL])(Chan*, Fcall*, Fcall*);
117