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