#pragma src "/sys/src/alef/lib/p9"
enum
{
DOMLEN= 48, /* length of an authentication domain name */
DESKEYLEN= 7, /* length of a des key for encrypt/decrypt */
CHALLEN= 8, /* length of a challenge */
TICKETLEN= (CHALLEN+2*NAMELEN+DESKEYLEN+1),
AUTHENTLEN= (CHALLEN+4+1),
};
aggr Fcall
{
byte type;
sint fid;
usint tag;
union
{
aggr
{
usint oldtag; /* T-Flush */
Qid qid; /* R-Attach, R-Walk, R-Open, R-Create */
byte rauth[AUTHENTLEN]; /* R-Attach */
};
aggr
{
byte uname[NAMELEN]; /* T-Auth, T-Attach */
byte aname[NAMELEN]; /* T-Attach */
byte ticket[TICKETLEN]; /* T-Attach */
byte auth[AUTHENTLEN]; /* T-Attach */
};
aggr
{
byte ename[ERRLEN]; /* R-Error */
byte authid[NAMELEN]; /* R-Session */
byte authdom[DOMLEN]; /* R-Session */
byte chal[CHALLEN]; /* T-Session/R-Session */
};
aggr
{
uint perm; /* T-Create */
sint newfid; /* T-Clone, T-Clwalk */
byte name[NAMELEN]; /* T-Walk, T-Clwalk, T-Create */
byte mode; /* T-Create, T-Open */
};
aggr
{
int offset; /* T-Read, T-Write */
int count; /* T-Read, T-Write, R-Read */
byte *data; /* T-Write, R-Read */
};
aggr
{
byte stat[DIRLEN]; /* T-Wstat, R-Stat */
};
};
};
enum
{
MAXFDATA = 8192,
MAXMSG = 128,
MAXRPC = 8192+128,
Tmux = 48,
Rmux, /* illegal */
Tnop = 50,
Rnop,
Tosession = 52, /* illegal */
Rosession, /* illegal */
Terror = 54, /* illegal */
Rerror,
Tflush = 56,
Rflush,
Toattach = 58, /* illegal */
Roattach, /* illegal */
Tclone = 60,
Rclone,
Twalk = 62,
Rwalk,
Topen = 64,
Ropen,
Tcreate = 66,
Rcreate,
Tread = 68,
Rread,
Twrite = 70,
Rwrite,
Tclunk = 72,
Rclunk,
Tremove = 74,
Rremove,
Tstat = 76,
Rstat,
Twstat = 78,
Rwstat,
Tclwalk = 80,
Rclwalk,
Tauth = 82, /* illegal */
Rauth, /* illegal */
Tsession = 84,
Rsession,
Tattach = 86,
Rattach,
Tmax,
};
int convM2S(byte*, Fcall*, int);
int convS2M(Fcall*, byte*);
int convM2D(byte*, Dir*);
int convD2M(Dir*, byte*);
int fcallconv(Printspec*);
int dirconv(Printspec*);
int dirmodeconv(Printspec*);
|