xref: /plan9/sys/src/cmd/srvold9p/9p1.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include <authsrv.h>
2*9a747e4fSDavid du Colombier 
3*9a747e4fSDavid du Colombier #define	DIRREC		116		/* size of a directory ascii record */
4*9a747e4fSDavid du Colombier #define	ERRREC		64		/* size of a error record */
5*9a747e4fSDavid du Colombier #define	NAMEREC	28
6*9a747e4fSDavid du Colombier 
7*9a747e4fSDavid du Colombier typedef	struct	Fcall9p1	Fcall9p1;
8*9a747e4fSDavid du Colombier typedef	struct	Qid9p1	Qid9p1;
9*9a747e4fSDavid du Colombier 
10*9a747e4fSDavid du Colombier struct	Qid9p1
11*9a747e4fSDavid du Colombier {
12*9a747e4fSDavid du Colombier 	long	path;
13*9a747e4fSDavid du Colombier 	long	version;
14*9a747e4fSDavid du Colombier };
15*9a747e4fSDavid du Colombier 
16*9a747e4fSDavid du Colombier struct	Fcall9p1
17*9a747e4fSDavid du Colombier {
18*9a747e4fSDavid du Colombier 	char	type;
19*9a747e4fSDavid du Colombier 	ushort	fid;
20*9a747e4fSDavid du Colombier 	short	err;
21*9a747e4fSDavid du Colombier 	short	tag;
22*9a747e4fSDavid du Colombier 	union
23*9a747e4fSDavid du Colombier 	{
24*9a747e4fSDavid du Colombier 		struct
25*9a747e4fSDavid du Colombier 		{
26*9a747e4fSDavid du Colombier 			short	uid;		/* T-Userstr */
27*9a747e4fSDavid du Colombier 			short	oldtag;		/* T-nFlush */
28*9a747e4fSDavid du Colombier 			Qid9p1	qid;		/* R-Attach, R-Clwalk, R-Walk,
29*9a747e4fSDavid du Colombier 						 * R-Open, R-Create */
30*9a747e4fSDavid du Colombier 			char	rauth[AUTHENTLEN];	/* R-attach */
31*9a747e4fSDavid du Colombier 		};
32*9a747e4fSDavid du Colombier 		struct
33*9a747e4fSDavid du Colombier 		{
34*9a747e4fSDavid du Colombier 			char	uname[NAMEREC];	/* T-nAttach */
35*9a747e4fSDavid du Colombier 			char	aname[NAMEREC];	/* T-nAttach */
36*9a747e4fSDavid du Colombier 			char	ticket[TICKETLEN];	/* T-attach */
37*9a747e4fSDavid du Colombier 			char	auth[AUTHENTLEN];	/* T-attach */
38*9a747e4fSDavid du Colombier 		};
39*9a747e4fSDavid du Colombier 		struct
40*9a747e4fSDavid du Colombier 		{
41*9a747e4fSDavid du Colombier 			char	ename[ERRREC];	/* R-nError */
42*9a747e4fSDavid du Colombier 			char	chal[CHALLEN];	/* T-session, R-session */
43*9a747e4fSDavid du Colombier 			char	authid[NAMEREC];	/* R-session */
44*9a747e4fSDavid du Colombier 			char	authdom[DOMLEN];	/* R-session */
45*9a747e4fSDavid du Colombier 		};
46*9a747e4fSDavid du Colombier 		struct
47*9a747e4fSDavid du Colombier 		{
48*9a747e4fSDavid du Colombier 			char	name[NAMEREC];	/* T-Walk, T-Clwalk, T-Create, T-Remove */
49*9a747e4fSDavid du Colombier 			long	perm;		/* T-Create */
50*9a747e4fSDavid du Colombier 			ushort	newfid;		/* T-Clone, T-Clwalk */
51*9a747e4fSDavid du Colombier 			char	mode;		/* T-Create, T-Open */
52*9a747e4fSDavid du Colombier 		};
53*9a747e4fSDavid du Colombier 		struct
54*9a747e4fSDavid du Colombier 		{
55*9a747e4fSDavid du Colombier 			long	offset;		/* T-Read, T-Write */
56*9a747e4fSDavid du Colombier 			long	count;		/* T-Read, T-Write, R-Read */
57*9a747e4fSDavid du Colombier 			char*	data;		/* T-Write, R-Read */
58*9a747e4fSDavid du Colombier 		};
59*9a747e4fSDavid du Colombier 		struct
60*9a747e4fSDavid du Colombier 		{
61*9a747e4fSDavid du Colombier 			char	stat[DIRREC];	/* T-Wstat, R-Stat */
62*9a747e4fSDavid du Colombier 		};
63*9a747e4fSDavid du Colombier 	};
64*9a747e4fSDavid du Colombier };
65*9a747e4fSDavid du Colombier 
66*9a747e4fSDavid du Colombier /*
67*9a747e4fSDavid du Colombier  * P9 protocol message types
68*9a747e4fSDavid du Colombier  */
69*9a747e4fSDavid du Colombier enum
70*9a747e4fSDavid du Colombier {
71*9a747e4fSDavid du Colombier 	Tnop9p1 =		50,
72*9a747e4fSDavid du Colombier 	Rnop9p1,
73*9a747e4fSDavid du Colombier 	Tosession9p1 =	52,
74*9a747e4fSDavid du Colombier 	Rosession9p1,
75*9a747e4fSDavid du Colombier 	Terror9p1 =	54,	/* illegal */
76*9a747e4fSDavid du Colombier 	Rerror9p1,
77*9a747e4fSDavid du Colombier 	Tflush9p1 =	56,
78*9a747e4fSDavid du Colombier 	Rflush9p1,
79*9a747e4fSDavid du Colombier 	Toattach9p1 =	58,
80*9a747e4fSDavid du Colombier 	Roattach9p1,
81*9a747e4fSDavid du Colombier 	Tclone9p1 =	60,
82*9a747e4fSDavid du Colombier 	Rclone9p1,
83*9a747e4fSDavid du Colombier 	Twalk9p1 =		62,
84*9a747e4fSDavid du Colombier 	Rwalk9p1,
85*9a747e4fSDavid du Colombier 	Topen9p1 =		64,
86*9a747e4fSDavid du Colombier 	Ropen9p1,
87*9a747e4fSDavid du Colombier 	Tcreate9p1 =	66,
88*9a747e4fSDavid du Colombier 	Rcreate9p1,
89*9a747e4fSDavid du Colombier 	Tread9p1 =		68,
90*9a747e4fSDavid du Colombier 	Rread9p1,
91*9a747e4fSDavid du Colombier 	Twrite9p1 =	70,
92*9a747e4fSDavid du Colombier 	Rwrite9p1,
93*9a747e4fSDavid du Colombier 	Tclunk9p1 =	72,
94*9a747e4fSDavid du Colombier 	Rclunk9p1,
95*9a747e4fSDavid du Colombier 	Tremove9p1 =	74,
96*9a747e4fSDavid du Colombier 	Rremove9p1,
97*9a747e4fSDavid du Colombier 	Tstat9p1 =		76,
98*9a747e4fSDavid du Colombier 	Rstat9p1,
99*9a747e4fSDavid du Colombier 	Twstat9p1 =	78,
100*9a747e4fSDavid du Colombier 	Rwstat9p1,
101*9a747e4fSDavid du Colombier 	Tclwalk9p1 =	80,
102*9a747e4fSDavid du Colombier 	Rclwalk9p1,
103*9a747e4fSDavid du Colombier 	Tauth9p1 =		82,	/* illegal */
104*9a747e4fSDavid du Colombier 	Rauth9p1,			/* illegal */
105*9a747e4fSDavid du Colombier 	Tsession9p1 =	84,
106*9a747e4fSDavid du Colombier 	Rsession9p1,
107*9a747e4fSDavid du Colombier 	Tattach9p1 =	86,
108*9a747e4fSDavid du Colombier 	Rattach9p1,
109*9a747e4fSDavid du Colombier 
110*9a747e4fSDavid du Colombier 	MAXSYSCALL
111*9a747e4fSDavid du Colombier };
112*9a747e4fSDavid du Colombier 
113*9a747e4fSDavid du Colombier int	convA2M9p1(Authenticator*, char*, char*);
114*9a747e4fSDavid du Colombier void	convM2A9p1(char*, Authenticator*, char*);
115*9a747e4fSDavid du Colombier void	convM2T9p1(char*, Ticket*, char*);
116*9a747e4fSDavid du Colombier int	convD2M9p1(Dir*, char*);
117*9a747e4fSDavid du Colombier int	convM2D9p1(char*, Dir*);
118*9a747e4fSDavid du Colombier int	convM2S9p1(char*, Fcall9p1*, int);
119*9a747e4fSDavid du Colombier int	convS2M9p1(Fcall9p1*, char*);
120*9a747e4fSDavid du Colombier int	fcallfmt9p1(Fmt*);
121*9a747e4fSDavid du Colombier int	fcall(int);
122*9a747e4fSDavid du Colombier 
123*9a747e4fSDavid du Colombier #pragma	varargck	type	"F"	Fcall*
124*9a747e4fSDavid du Colombier #pragma	varargck	type	"G"	Fcall9p1*
125*9a747e4fSDavid du Colombier #pragma	varargck	type	"D"	Dir*
126*9a747e4fSDavid du Colombier 
127*9a747e4fSDavid du Colombier void	fatal(char*, ...);
128