xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/fcall.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier typedef	struct	Fcall	Fcall;
23e12c5d1SDavid du Colombier 
3*219b2ee8SDavid du Colombier /* see /sys/include/auth.h */
4*219b2ee8SDavid du Colombier enum
5*219b2ee8SDavid du Colombier {
6*219b2ee8SDavid du Colombier 	DOMLEN=		48,		/* length of an authentication domain name */
7*219b2ee8SDavid du Colombier 	DESKEYLEN=	7,		/* length of a des key for encrypt/decrypt */
8*219b2ee8SDavid du Colombier 	CHALLEN=	8,		/* length of a challenge */
9*219b2ee8SDavid du Colombier 	NETCHLEN=	16,		/* max network challenge length	*/
10*219b2ee8SDavid du Colombier 	CONFIGLEN=	14,
11*219b2ee8SDavid du Colombier 
12*219b2ee8SDavid du Colombier 	KEYDBLEN=	NAMELEN+DESKEYLEN+4+2
13*219b2ee8SDavid du Colombier };
14*219b2ee8SDavid du Colombier #define	TICKETLEN	(CHALLEN+2*NAMELEN+DESKEYLEN+1)
15*219b2ee8SDavid du Colombier #define	AUTHENTLEN	(CHALLEN+4+1)
16*219b2ee8SDavid du Colombier 
173e12c5d1SDavid du Colombier struct	Fcall
183e12c5d1SDavid du Colombier {
193e12c5d1SDavid du Colombier 	char	type;
203e12c5d1SDavid du Colombier 	short	fid;
213e12c5d1SDavid du Colombier 	unsigned short	tag;
223e12c5d1SDavid du Colombier 	union
233e12c5d1SDavid du Colombier 	{
243e12c5d1SDavid du Colombier 		struct
253e12c5d1SDavid du Colombier 		{
263e12c5d1SDavid du Colombier 			unsigned short	oldtag;		/* T-Flush */
273e12c5d1SDavid du Colombier 			Qid	qid;		/* R-Attach, R-Walk, R-Open, R-Create */
28*219b2ee8SDavid du Colombier 			char	rauth[AUTHENTLEN];	/* Rattach */
293e12c5d1SDavid du Colombier 		};
303e12c5d1SDavid du Colombier 		struct
313e12c5d1SDavid du Colombier 		{
32*219b2ee8SDavid du Colombier 			char	uname[NAMELEN];	/* T-Attach */
333e12c5d1SDavid du Colombier 			char	aname[NAMELEN];	/* T-Attach */
34*219b2ee8SDavid du Colombier 			char	ticket[TICKETLEN];	/* T-Attach */
35*219b2ee8SDavid du Colombier 			char	auth[AUTHENTLEN];/* T-Attach */
363e12c5d1SDavid du Colombier 		};
373e12c5d1SDavid du Colombier 		struct
383e12c5d1SDavid du Colombier 		{
393e12c5d1SDavid du Colombier 			char	ename[ERRLEN];	/* R-Error */
40*219b2ee8SDavid du Colombier 			char	authid[NAMELEN];	/* R-session */
41*219b2ee8SDavid du Colombier 			char	authdom[DOMLEN];	/* R-session */
42*219b2ee8SDavid du Colombier 			char	chal[CHALLEN];		/* T-session/R-session */
433e12c5d1SDavid du Colombier 		};
443e12c5d1SDavid du Colombier 		struct
453e12c5d1SDavid du Colombier 		{
463e12c5d1SDavid du Colombier 			long	perm;		/* T-Create */
473e12c5d1SDavid du Colombier 			short	newfid;		/* T-Clone, T-Clwalk */
483e12c5d1SDavid du Colombier 			char	name[NAMELEN];	/* T-Walk, T-Clwalk, T-Create */
493e12c5d1SDavid du Colombier 			char	mode;		/* T-Create, T-Open */
503e12c5d1SDavid du Colombier 		};
513e12c5d1SDavid du Colombier 		struct
523e12c5d1SDavid du Colombier 		{
533e12c5d1SDavid du Colombier 			long	offset;		/* T-Read, T-Write */
543e12c5d1SDavid du Colombier 			long	count;		/* T-Read, T-Write, R-Read */
553e12c5d1SDavid du Colombier 			char	*data;		/* T-Write, R-Read */
563e12c5d1SDavid du Colombier 		};
573e12c5d1SDavid du Colombier 		struct
583e12c5d1SDavid du Colombier 		{
593e12c5d1SDavid du Colombier 			char	stat[DIRLEN];	/* T-Wstat, R-Stat */
603e12c5d1SDavid du Colombier 		};
613e12c5d1SDavid du Colombier 	};
623e12c5d1SDavid du Colombier };
633e12c5d1SDavid du Colombier 
643e12c5d1SDavid du Colombier #define	MAXFDATA	8192
65*219b2ee8SDavid du Colombier #define	MAXMSG		160	/* max header sans data */
663e12c5d1SDavid du Colombier #define NOTAG		0xFFFF	/* Dummy tag */
673e12c5d1SDavid du Colombier 
683e12c5d1SDavid du Colombier enum
693e12c5d1SDavid du Colombier {
703e12c5d1SDavid du Colombier 	Tmux =		48,
713e12c5d1SDavid du Colombier 	Rmux,			/* illegal */
723e12c5d1SDavid du Colombier 	Tnop =		50,
733e12c5d1SDavid du Colombier 	Rnop,
74*219b2ee8SDavid du Colombier 	Tosession =	52,	/* illegal */
75*219b2ee8SDavid du Colombier 	Rosession,		/* illegal */
763e12c5d1SDavid du Colombier 	Terror =	54,	/* illegal */
773e12c5d1SDavid du Colombier 	Rerror,
783e12c5d1SDavid du Colombier 	Tflush =	56,
793e12c5d1SDavid du Colombier 	Rflush,
80*219b2ee8SDavid du Colombier 	Toattach =	58,	/* illegal */
81*219b2ee8SDavid du Colombier 	Roattach,		/* illegal */
823e12c5d1SDavid du Colombier 	Tclone =	60,
833e12c5d1SDavid du Colombier 	Rclone,
843e12c5d1SDavid du Colombier 	Twalk =		62,
853e12c5d1SDavid du Colombier 	Rwalk,
863e12c5d1SDavid du Colombier 	Topen =		64,
873e12c5d1SDavid du Colombier 	Ropen,
883e12c5d1SDavid du Colombier 	Tcreate =	66,
893e12c5d1SDavid du Colombier 	Rcreate,
903e12c5d1SDavid du Colombier 	Tread =		68,
913e12c5d1SDavid du Colombier 	Rread,
923e12c5d1SDavid du Colombier 	Twrite =	70,
933e12c5d1SDavid du Colombier 	Rwrite,
943e12c5d1SDavid du Colombier 	Tclunk =	72,
953e12c5d1SDavid du Colombier 	Rclunk,
963e12c5d1SDavid du Colombier 	Tremove =	74,
973e12c5d1SDavid du Colombier 	Rremove,
983e12c5d1SDavid du Colombier 	Tstat =		76,
993e12c5d1SDavid du Colombier 	Rstat,
1003e12c5d1SDavid du Colombier 	Twstat =	78,
1013e12c5d1SDavid du Colombier 	Rwstat,
1023e12c5d1SDavid du Colombier 	Tclwalk =	80,
1033e12c5d1SDavid du Colombier 	Rclwalk,
104*219b2ee8SDavid du Colombier 	Tauth =		82,	/* illegal */
105*219b2ee8SDavid du Colombier 	Rauth,			/* illegal */
106*219b2ee8SDavid du Colombier 	Tsession =	84,
107*219b2ee8SDavid du Colombier 	Rsession,
108*219b2ee8SDavid du Colombier 	Tattach =	86,
109*219b2ee8SDavid du Colombier 	Rattach,
1103e12c5d1SDavid du Colombier };
1113e12c5d1SDavid du Colombier 
1123e12c5d1SDavid du Colombier int	convM2S(char*, Fcall*, int);
1133e12c5d1SDavid du Colombier int	convS2M(Fcall*, char*);
1143e12c5d1SDavid du Colombier 
1153e12c5d1SDavid du Colombier int	convM2D(char*, Dir*);
1163e12c5d1SDavid du Colombier int	convD2M(Dir*, char*);
1173e12c5d1SDavid du Colombier 
1183e12c5d1SDavid du Colombier char*	getS(int, char*, Fcall*, long*);
119