xref: /plan9/sys/src/cmd/disk/kfs/9p1.h (revision 12fd1c83b21b4d1deeab2b58fe2c202d2038c714)
19a747e4fSDavid du Colombier #define	DIRREC		116		/* size of a directory ascii record */
29a747e4fSDavid du Colombier #define	ERRREC		64		/* size of a error record */
39a747e4fSDavid du Colombier #define	MAXMSG		160	/* max header sans data */
49a747e4fSDavid du Colombier 
59a747e4fSDavid du Colombier typedef	struct	Oldfcall	Oldfcall;
69a747e4fSDavid du Colombier 
79a747e4fSDavid du Colombier struct	Oldfcall
89a747e4fSDavid du Colombier {
99a747e4fSDavid du Colombier 	char	type;
109a747e4fSDavid du Colombier 	ushort	fid;
119a747e4fSDavid du Colombier 	short	err;
129a747e4fSDavid du Colombier 	short	tag;
139a747e4fSDavid du Colombier 	union
149a747e4fSDavid du Colombier 	{
159a747e4fSDavid du Colombier 		struct
169a747e4fSDavid du Colombier 		{
179a747e4fSDavid du Colombier 			short	uid;		/* T-Userstr */
189a747e4fSDavid du Colombier 			short	oldtag;		/* T-nFlush */
199a747e4fSDavid du Colombier 			Qid9p1	qid;		/* R-Attach, R-Clwalk, R-Walk,
209a747e4fSDavid du Colombier 						 * R-Open, R-Create */
219a747e4fSDavid du Colombier 			char	rauth[AUTHENTLEN];	/* R-attach */
229a747e4fSDavid du Colombier 		};
239a747e4fSDavid du Colombier 		struct
249a747e4fSDavid du Colombier 		{
259a747e4fSDavid du Colombier 			char	uname[NAMELEN];	/* T-nAttach */
269a747e4fSDavid du Colombier 			char	aname[NAMELEN];	/* T-nAttach */
279a747e4fSDavid du Colombier 			char	ticket[TICKETLEN];	/* T-attach */
289a747e4fSDavid du Colombier 			char	auth[AUTHENTLEN];	/* T-attach */
299a747e4fSDavid du Colombier 		};
309a747e4fSDavid du Colombier 		struct
319a747e4fSDavid du Colombier 		{
329a747e4fSDavid du Colombier 			char	ename[ERRREC];	/* R-nError */
339a747e4fSDavid du Colombier 			char	chal[CHALLEN];	/* T-session, R-session */
349a747e4fSDavid du Colombier 			char	authid[NAMELEN];	/* R-session */
359a747e4fSDavid du Colombier 			char	authdom[DOMLEN];	/* R-session */
369a747e4fSDavid du Colombier 		};
379a747e4fSDavid du Colombier 		struct
389a747e4fSDavid du Colombier 		{
399a747e4fSDavid du Colombier 			char	name[NAMELEN];	/* T-Walk, T-Clwalk, T-Create, T-Remove */
409a747e4fSDavid du Colombier 			long	perm;		/* T-Create */
419a747e4fSDavid du Colombier 			ushort	newfid;		/* T-Clone, T-Clwalk */
429a747e4fSDavid du Colombier 			char	mode;		/* T-Create, T-Open */
439a747e4fSDavid du Colombier 		};
449a747e4fSDavid du Colombier 		struct
459a747e4fSDavid du Colombier 		{
469a747e4fSDavid du Colombier 			long	offset;		/* T-Read, T-Write */
479a747e4fSDavid du Colombier 			long	count;		/* T-Read, T-Write, R-Read */
489a747e4fSDavid du Colombier 			char*	data;		/* T-Write, R-Read */
499a747e4fSDavid du Colombier 		};
509a747e4fSDavid du Colombier 		struct
519a747e4fSDavid du Colombier 		{
529a747e4fSDavid du Colombier 			char	stat[DIRREC];	/* T-Wstat, R-Stat */
539a747e4fSDavid du Colombier 		};
549a747e4fSDavid du Colombier 	};
559a747e4fSDavid du Colombier };
569a747e4fSDavid du Colombier 
579a747e4fSDavid du Colombier /*
589a747e4fSDavid du Colombier  * P9 protocol message types
599a747e4fSDavid du Colombier  */
609a747e4fSDavid du Colombier enum
619a747e4fSDavid du Colombier {
629a747e4fSDavid du Colombier 	Tnop9p1 =		50,
639a747e4fSDavid du Colombier 	Rnop9p1,
649a747e4fSDavid du Colombier 	Tosession9p1 =	52,
659a747e4fSDavid du Colombier 	Rosession9p1,
669a747e4fSDavid du Colombier 	Terror9p1 =	54,	/* illegal */
679a747e4fSDavid du Colombier 	Rerror9p1,
689a747e4fSDavid du Colombier 	Tflush9p1 =	56,
699a747e4fSDavid du Colombier 	Rflush9p1,
709a747e4fSDavid du Colombier 	Toattach9p1 =	58,
719a747e4fSDavid du Colombier 	Roattach9p1,
729a747e4fSDavid du Colombier 	Tclone9p1 =	60,
739a747e4fSDavid du Colombier 	Rclone9p1,
749a747e4fSDavid du Colombier 	Twalk9p1 =		62,
759a747e4fSDavid du Colombier 	Rwalk9p1,
769a747e4fSDavid du Colombier 	Topen9p1 =		64,
779a747e4fSDavid du Colombier 	Ropen9p1,
789a747e4fSDavid du Colombier 	Tcreate9p1 =	66,
799a747e4fSDavid du Colombier 	Rcreate9p1,
809a747e4fSDavid du Colombier 	Tread9p1 =		68,
819a747e4fSDavid du Colombier 	Rread9p1,
829a747e4fSDavid du Colombier 	Twrite9p1 =	70,
839a747e4fSDavid du Colombier 	Rwrite9p1,
849a747e4fSDavid du Colombier 	Tclunk9p1 =	72,
859a747e4fSDavid du Colombier 	Rclunk9p1,
869a747e4fSDavid du Colombier 	Tremove9p1 =	74,
879a747e4fSDavid du Colombier 	Rremove9p1,
889a747e4fSDavid du Colombier 	Tstat9p1 =		76,
899a747e4fSDavid du Colombier 	Rstat9p1,
909a747e4fSDavid du Colombier 	Twstat9p1 =	78,
919a747e4fSDavid du Colombier 	Rwstat9p1,
929a747e4fSDavid du Colombier 	Tclwalk9p1 =	80,
939a747e4fSDavid du Colombier 	Rclwalk9p1,
949a747e4fSDavid du Colombier 	Tauth9p1 =		82,	/* illegal */
959a747e4fSDavid du Colombier 	Rauth9p1,			/* illegal */
969a747e4fSDavid du Colombier 	Tsession9p1 =	84,
979a747e4fSDavid du Colombier 	Rsession9p1,
989a747e4fSDavid du Colombier 	Tattach9p1 =	86,
999a747e4fSDavid du Colombier 	Rattach9p1,
1009a747e4fSDavid du Colombier 
1019a747e4fSDavid du Colombier 	MAXSYSCALL
1029a747e4fSDavid du Colombier };
1039a747e4fSDavid du Colombier 
1049a747e4fSDavid du Colombier int	convD2M9p1(Dentry*, char*);
1059a747e4fSDavid du Colombier int	convM2D9p1(char*, Dentry*);
1069a747e4fSDavid du Colombier int	convM2S9p1(uchar*, Oldfcall*, int);
1079a747e4fSDavid du Colombier int	convS2M9p1(Oldfcall*, uchar*);
1089a747e4fSDavid du Colombier void	fcall9p1(Chan*, Oldfcall*, Oldfcall*);
109*5d459b5aSDavid du Colombier int	authorize(Chan*, Oldfcall*, Oldfcall*);
1109a747e4fSDavid du Colombier 
1119a747e4fSDavid du Colombier void	(*call9p1[MAXSYSCALL])(Chan*, Oldfcall*, Oldfcall*);
1129a747e4fSDavid du Colombier 
1139a747e4fSDavid du Colombier extern Nvrsafe nvr;
114