9.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #include <auth.h>
  2. #include <fcall.h>
  3. enum {
  4. NFidHash = 503,
  5. };
  6. typedef struct Con Con;
  7. typedef struct DirBuf DirBuf;
  8. typedef struct Excl Excl;
  9. typedef struct Fid Fid;
  10. typedef struct Fsys Fsys;
  11. typedef struct Msg Msg;
  12. struct Msg {
  13. uchar* data;
  14. u32int msize; /* actual size of data */
  15. Fcall t;
  16. Fcall r;
  17. Con* con;
  18. int flush;
  19. Msg* next;
  20. Msg* prev;
  21. };
  22. struct Con {
  23. VtLock* lock;
  24. int fd;
  25. char* name;
  26. uchar* data; /* max, not negotiated */
  27. u32int msize; /* negotiated with Tversion */
  28. int state;
  29. int aok;
  30. Msg* version;
  31. int isconsole;
  32. Msg* mhead; /* active queue */
  33. Msg* mtail;
  34. VtRendez* active;
  35. int nmsg;
  36. VtLock* fidlock; /* */
  37. Fid* fidhash[NFidHash];
  38. Fid* fhead;
  39. Fid* ftail;
  40. int nfid;
  41. };
  42. enum {
  43. CsDead,
  44. CsNew,
  45. CsDown,
  46. CsInit,
  47. CsUp,
  48. CsMoribund,
  49. };
  50. struct Fid {
  51. VtLock* lock;
  52. Con* con;
  53. u32int fidno;
  54. int ref; /* inc/dec under Con.fidlock */
  55. int flags;
  56. int open;
  57. File* file;
  58. Qid qid;
  59. char* uid;
  60. char* uname;
  61. DirBuf* db;
  62. Excl* excl;
  63. VtLock* alock; /* Tauth/Tattach */
  64. AuthRpc* rpc;
  65. Fsys* fsys;
  66. char* cuname;
  67. Fid* hash; /* lookup by fidno */
  68. Fid* next; /* clunk session with Tversion */
  69. Fid* prev;
  70. };
  71. enum { /* Fid.flags and fidGet(..., flags) */
  72. FidFCreate = 0x01,
  73. FidFWlock = 0x02,
  74. };
  75. enum { /* Fid.open */
  76. FidOCreate = 0x01,
  77. FidORead = 0x02,
  78. FidOWrite = 0x04,
  79. FidORclose = 0x08,
  80. };
  81. /*
  82. * 9p.c
  83. */
  84. extern int (*rFcall[Tmax])(Msg*);
  85. extern int validFileName(char*);
  86. /*
  87. * 9auth.c
  88. */
  89. extern int authCheck(Fcall*, Fid*, Fsys*);
  90. extern int authRead(Fid*, void*, int);
  91. extern int authWrite(Fid*, void*, int);
  92. /*
  93. * 9dir.c
  94. */
  95. extern void dirBufFree(DirBuf*);
  96. extern int dirDe2M(DirEntry*, uchar*, int);
  97. extern int dirRead(Fid*, uchar*, int, vlong);
  98. /*
  99. * 9excl.c
  100. */
  101. extern int exclAlloc(Fid*);
  102. extern void exclFree(Fid*);
  103. extern void exclInit(void);
  104. extern int exclUpdate(Fid*);
  105. /*
  106. * 9fid.c
  107. */
  108. extern void fidClunk(Fid*);
  109. extern Fid* fidGet(Con*, u32int, int);
  110. extern void fidInit(void);
  111. extern void fidPut(Fid*);
  112. /*
  113. * 9fsys.c
  114. */
  115. extern Fsys* fsysGet(char*);
  116. extern Fs* fsysGetFs(Fsys*);
  117. extern void fsysFsRlock(Fsys*);
  118. extern void fsysFsRUnlock(Fsys*);
  119. extern File* fsysGetRoot(Fsys*, char*);
  120. extern Fsys* fsysIncRef(Fsys*);
  121. extern int fsysInit(void);
  122. extern int fsysNoAuthCheck(Fsys*);
  123. extern int fsysNoPermCheck(Fsys*);
  124. extern void fsysPut(Fsys*);
  125. extern int fsysWstatAllow(Fsys*);
  126. extern char* fsysGetName(Fsys*);
  127. /*
  128. * 9lstn.c
  129. */
  130. extern int lstnInit(void);
  131. /*
  132. * 9proc.c
  133. */
  134. extern Con* conAlloc(int, char*);
  135. extern void procInit(void);
  136. /*
  137. * 9srv.c
  138. */
  139. extern int srvInit(void);
  140. /*
  141. * 9user.c
  142. */
  143. extern int groupLeader(char*, char*);
  144. extern int groupMember(char*, char*);
  145. extern int groupWriteMember(char*);
  146. extern char* unameByUid(char*);
  147. extern char* uidByUname(char*);
  148. extern int usersInit(void);
  149. extern int validUserName(char*);
  150. extern char* uidadm;
  151. extern char* unamenone;
  152. extern char* uidnoworld;
  153. /*
  154. * Ccli.c
  155. */
  156. extern int cliAddCmd(char*, int (*)(int, char*[]));
  157. extern int cliError(char*, ...);
  158. extern int cliInit(void);
  159. extern int cliExec(char*);
  160. /*
  161. * Ccmd.c
  162. */
  163. extern int cmdInit(void);
  164. /*
  165. * Ccons.c
  166. */
  167. extern int consPrompt(char*);
  168. extern int consInit(void);
  169. extern int consOpen(int, int, int);
  170. extern int consTTY(void);
  171. extern int consWrite(char*, int);
  172. /*
  173. * Clog.c
  174. */
  175. extern int consPrint(char*, ...);
  176. extern int consVPrint(char*, va_list);
  177. /*
  178. * fossil.c
  179. */
  180. extern int Dflag;