3 6e527fbc 2005-02-13 devnull MaxRpc = 2048, /* max size of any protocol message */
5 6e527fbc 2005-02-13 devnull /* keep in sync with rpc.c:/rpcname */
6 6e527fbc 2005-02-13 devnull RpcUnknown = 0, /* Rpc.op */
7 6e527fbc 2005-02-13 devnull RpcAuthinfo,
10 6e527fbc 2005-02-13 devnull RpcStart,
11 6e527fbc 2005-02-13 devnull RpcWrite,
12 ce94dbe6 2005-02-13 devnull RpcReadHex,
13 ce94dbe6 2005-02-13 devnull RpcWriteHex,
15 6e527fbc 2005-02-13 devnull /* thread stack size - big buffers for printing */
16 cbeb0b26 2006-04-01 devnull STACK = 65536
19 6e527fbc 2005-02-13 devnull typedef struct Conv Conv;
20 6e527fbc 2005-02-13 devnull typedef struct Key Key;
21 6e527fbc 2005-02-13 devnull typedef struct Logbuf Logbuf;
22 6e527fbc 2005-02-13 devnull typedef struct Proto Proto;
23 6e527fbc 2005-02-13 devnull typedef struct Ring Ring;
24 6e527fbc 2005-02-13 devnull typedef struct Role Role;
25 6e527fbc 2005-02-13 devnull typedef struct Rpc Rpc;
27 6e527fbc 2005-02-13 devnull struct Rpc
30 6e527fbc 2005-02-13 devnull void *data;
31 6e527fbc 2005-02-13 devnull int count;
32 ce94dbe6 2005-02-13 devnull int hex; /* should result of read be turned into hex? */
35 6e527fbc 2005-02-13 devnull struct Conv
37 6e527fbc 2005-02-13 devnull int ref; /* ref count */
38 6e527fbc 2005-02-13 devnull int hangup; /* flag: please hang up */
39 6e527fbc 2005-02-13 devnull int active; /* flag: there is an active thread */
40 6e527fbc 2005-02-13 devnull int done; /* flag: conversation finished successfully */
41 6e527fbc 2005-02-13 devnull ulong tag; /* identifying tag */
42 6e527fbc 2005-02-13 devnull Conv *next; /* in linked list */
43 6e527fbc 2005-02-13 devnull char *sysuser; /* system name for user speaking to us */
44 6e527fbc 2005-02-13 devnull char *state; /* for debugging */
45 6e527fbc 2005-02-13 devnull char statebuf[128]; /* for formatted states */
46 6e527fbc 2005-02-13 devnull char err[ERRMAX]; /* last error */
48 6e527fbc 2005-02-13 devnull Attr *attr; /* current attributes */
49 6e527fbc 2005-02-13 devnull Proto *proto; /* protocol */
51 6e527fbc 2005-02-13 devnull Channel *rpcwait; /* wait here for an rpc */
52 6e527fbc 2005-02-13 devnull Rpc rpc; /* current rpc. op==RpcUnknown means none */
53 6e527fbc 2005-02-13 devnull char rpcbuf[MaxRpc]; /* buffer for rpc */
54 6e527fbc 2005-02-13 devnull char reply[MaxRpc]; /* buffer for response */
55 6e527fbc 2005-02-13 devnull int nreply; /* count of response */
56 6e527fbc 2005-02-13 devnull void (*kickreply)(Conv*); /* call to send response */
57 6e527fbc 2005-02-13 devnull Req *req; /* 9P call to read response */
59 6e527fbc 2005-02-13 devnull Channel *keywait; /* wait here for key confirmation */
63 6e527fbc 2005-02-13 devnull struct Key
65 6e527fbc 2005-02-13 devnull int ref; /* ref count */
66 6e527fbc 2005-02-13 devnull ulong tag; /* identifying tag: sequence number */
67 6e527fbc 2005-02-13 devnull Attr *attr; /* public attributes */
68 6e527fbc 2005-02-13 devnull Attr *privattr; /* private attributes, like !password */
69 6e527fbc 2005-02-13 devnull Proto *proto; /* protocol owner of key */
70 6e527fbc 2005-02-13 devnull void *priv; /* protocol-specific storage */
73 6e527fbc 2005-02-13 devnull struct Logbuf
75 6e527fbc 2005-02-13 devnull Req *wait;
76 6e527fbc 2005-02-13 devnull Req **waitlast;
79 6e527fbc 2005-02-13 devnull char *msg[128];
82 6e527fbc 2005-02-13 devnull struct Ring
84 6e527fbc 2005-02-13 devnull Key **key;
85 6e527fbc 2005-02-13 devnull int nkey;
88 6e527fbc 2005-02-13 devnull struct Proto
90 6e527fbc 2005-02-13 devnull char *name; /* name of protocol */
91 6e527fbc 2005-02-13 devnull Role *roles; /* list of roles and service functions */
92 6e527fbc 2005-02-13 devnull char *keyprompt; /* required attributes for key proto=name */
93 6e527fbc 2005-02-13 devnull int (*checkkey)(Key*); /* initialize k->priv or reject key */
94 6e527fbc 2005-02-13 devnull void (*closekey)(Key*); /* free k->priv */
97 6e527fbc 2005-02-13 devnull struct Role
99 6e527fbc 2005-02-13 devnull char *name; /* name of role */
100 6e527fbc 2005-02-13 devnull int (*fn)(Conv*); /* service function */
103 6e527fbc 2005-02-13 devnull extern char *authaddr; /* plan9.c */
104 6e527fbc 2005-02-13 devnull extern int *confirminuse; /* fs.c */
105 6e527fbc 2005-02-13 devnull extern Conv* conv; /* conv.c */
106 6e527fbc 2005-02-13 devnull extern int debug; /* main.c */
107 6e527fbc 2005-02-13 devnull extern char *factname; /* main.c */
108 6e527fbc 2005-02-13 devnull extern Srv fs; /* fs.c */
109 6e527fbc 2005-02-13 devnull extern int *needkeyinuse; /* fs.c */
110 6e527fbc 2005-02-13 devnull extern char *owner; /* main.c */
111 6e527fbc 2005-02-13 devnull extern Proto *prototab[]; /* main.c */
112 6e527fbc 2005-02-13 devnull extern Ring ring; /* key.c */
113 6e527fbc 2005-02-13 devnull extern char *rpcname[]; /* rpc.c */
115 6e527fbc 2005-02-13 devnull extern char Easproto[]; /* err.c */
117 b3e7c026 2005-03-15 devnull void fsinit0(void);
119 6e527fbc 2005-02-13 devnull /* provided by lib9p */
120 6e527fbc 2005-02-13 devnull #define emalloc emalloc9p
121 6e527fbc 2005-02-13 devnull #define erealloc erealloc9p
122 6e527fbc 2005-02-13 devnull #define estrdup estrdup9p
124 6e527fbc 2005-02-13 devnull /* hidden in libauth */
125 6e527fbc 2005-02-13 devnull #define attrfmt _attrfmt
126 6e527fbc 2005-02-13 devnull #define copyattr _copyattr
127 6e527fbc 2005-02-13 devnull #define delattr _delattr
128 6e527fbc 2005-02-13 devnull #define findattr _findattr
129 6e527fbc 2005-02-13 devnull #define freeattr _freeattr
130 6e527fbc 2005-02-13 devnull #define mkattr _mkattr
131 6e527fbc 2005-02-13 devnull #define parseattr _parseattr
132 6e527fbc 2005-02-13 devnull #define strfindattr _strfindattr
134 6e527fbc 2005-02-13 devnull extern Attr* addattr(Attr*, char*, ...);
135 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos addattr 2 */
136 6e527fbc 2005-02-13 devnull extern Attr* addattrs(Attr*, Attr*);
137 6e527fbc 2005-02-13 devnull extern Attr* sortattr(Attr*);
138 6e527fbc 2005-02-13 devnull extern int attrnamefmt(Fmt*);
139 6e527fbc 2005-02-13 devnull /* #pragma varargck type "N" Attr* */
140 6e527fbc 2005-02-13 devnull extern int matchattr(Attr*, Attr*, Attr*);
141 6e527fbc 2005-02-13 devnull extern Attr* parseattrfmt(char*, ...);
142 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos parseattrfmt 1 */
143 6e527fbc 2005-02-13 devnull extern Attr* parseattrfmtv(char*, va_list);
145 6e527fbc 2005-02-13 devnull extern void confirmflush(Req*);
146 6e527fbc 2005-02-13 devnull extern void confirmread(Req*);
147 6e527fbc 2005-02-13 devnull extern int confirmwrite(char*);
148 6e527fbc 2005-02-13 devnull extern int needkey(Conv*, Attr*);
149 6e527fbc 2005-02-13 devnull extern int badkey(Conv*, Key*, char*, Attr*);
150 6e527fbc 2005-02-13 devnull extern int confirmkey(Conv*, Key*);
152 6e527fbc 2005-02-13 devnull extern Conv* convalloc(char*);
153 6e527fbc 2005-02-13 devnull extern void convclose(Conv*);
154 6e527fbc 2005-02-13 devnull extern void convhangup(Conv*);
155 6e527fbc 2005-02-13 devnull extern int convneedkey(Conv*, Attr*);
156 6e527fbc 2005-02-13 devnull extern int convbadkey(Conv*, Key*, char*, Attr*);
157 6e527fbc 2005-02-13 devnull extern int convread(Conv*, void*, int);
158 6e527fbc 2005-02-13 devnull extern int convreadm(Conv*, char**);
159 6e527fbc 2005-02-13 devnull extern int convprint(Conv*, char*, ...);
160 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos convprint 2 */
161 6e527fbc 2005-02-13 devnull extern int convreadfn(Conv*, int(*)(void*, int), char**);
162 6e527fbc 2005-02-13 devnull extern void convreset(Conv*);
163 6e527fbc 2005-02-13 devnull extern int convwrite(Conv*, void*, int);
165 6e527fbc 2005-02-13 devnull extern int ctlwrite(char*);
167 6e527fbc 2005-02-13 devnull extern char* estrappend(char*, char*, ...);
168 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos estrappend 2 */
169 6e527fbc 2005-02-13 devnull extern int hexparse(char*, uchar*, int);
171 6e527fbc 2005-02-13 devnull extern void keyadd(Key*);
172 6e527fbc 2005-02-13 devnull extern Key* keylookup(char*, ...);
173 6e527fbc 2005-02-13 devnull extern Key* keyiterate(int, char*, ...);
174 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos keylookup 1 */
175 6e527fbc 2005-02-13 devnull extern Key* keyfetch(Conv*, char*, ...);
176 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos keyfetch 2 */
177 6e527fbc 2005-02-13 devnull extern void keyclose(Key*);
178 6e527fbc 2005-02-13 devnull extern void keyevict(Conv*, Key*, char*, ...);
179 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos keyevict 3 */
180 6e527fbc 2005-02-13 devnull extern Key* keyreplace(Conv*, Key*, char*, ...);
181 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos keyreplace 3 */
183 6e527fbc 2005-02-13 devnull extern void lbkick(Logbuf*);
184 6e527fbc 2005-02-13 devnull extern void lbappend(Logbuf*, char*, ...);
185 6e527fbc 2005-02-13 devnull extern void lbvappend(Logbuf*, char*, va_list);
186 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos lbappend 2 */
187 6e527fbc 2005-02-13 devnull extern void lbread(Logbuf*, Req*);
188 6e527fbc 2005-02-13 devnull extern void lbflush(Logbuf*, Req*);
189 6e527fbc 2005-02-13 devnull extern void flog(char*, ...);
190 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos flog 1 */
192 6e527fbc 2005-02-13 devnull extern void logflush(Req*);
193 6e527fbc 2005-02-13 devnull extern void logread(Req*);
194 6e527fbc 2005-02-13 devnull extern void logwrite(Req*);
196 6e527fbc 2005-02-13 devnull extern void needkeyread(Req*);
197 6e527fbc 2005-02-13 devnull extern void needkeyflush(Req*);
198 6e527fbc 2005-02-13 devnull extern int needkeywrite(char*);
199 6e527fbc 2005-02-13 devnull extern int needkeyqueue(void);
201 6e527fbc 2005-02-13 devnull extern Attr* addcap(Attr*, char*, Ticket*);
202 6e527fbc 2005-02-13 devnull extern Key* plan9authkey(Attr*);
203 6e527fbc 2005-02-13 devnull extern int _authdial(char*, char*);
205 6e527fbc 2005-02-13 devnull extern int memrandom(void*, int);
207 6e527fbc 2005-02-13 devnull extern Proto* protolookup(char*);
209 6e527fbc 2005-02-13 devnull extern int rpcwrite(Conv*, void*, int);
210 6e527fbc 2005-02-13 devnull extern void rpcrespond(Conv*, char*, ...);
211 6e527fbc 2005-02-13 devnull /* #pragma varargck argpos rpcrespond 2 */
212 6e527fbc 2005-02-13 devnull extern void rpcrespondn(Conv*, char*, void*, int);
213 6e527fbc 2005-02-13 devnull extern void rpcexec(Conv*);
215 6e527fbc 2005-02-13 devnull extern int xioauthdial(char*, char*);
216 6e527fbc 2005-02-13 devnull extern void xioclose(int);
217 6e527fbc 2005-02-13 devnull extern int xiodial(char*, char*, char*, int*);
218 6e527fbc 2005-02-13 devnull extern int xiowrite(int, void*, int);
219 6e527fbc 2005-02-13 devnull extern int xioasrdresp(int, void*, int);
220 6e527fbc 2005-02-13 devnull extern int xioasgetticket(int, char*, char*);
222 ce94dbe6 2005-02-13 devnull /* pkcs1.c - maybe should be in libsec */
223 6e527fbc 2005-02-13 devnull typedef DigestState *DigestAlg(uchar*, ulong, uchar*, DigestState*);
224 6e527fbc 2005-02-13 devnull int rsasign(RSApriv*, DigestAlg*, uchar*, uint, uchar*, uint);
225 ce94dbe6 2005-02-13 devnull int rsaverify(RSApub*, DigestAlg*, uchar*, uint, uchar*, uint);
226 6e527fbc 2005-02-13 devnull void mptoberjust(mpint*, uchar*, uint);
229 6e527fbc 2005-02-13 devnull extern int extrafactotumdir;
231 6e527fbc 2005-02-13 devnull int havesecstore(void);
232 6e527fbc 2005-02-13 devnull int secstorefetch(void);