Blame


1 6e527fbc 2005-02-13 devnull enum
2 6e527fbc 2005-02-13 devnull {
3 6e527fbc 2005-02-13 devnull MaxRpc = 2048, /* max size of any protocol message */
4 6e527fbc 2005-02-13 devnull
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,
8 6e527fbc 2005-02-13 devnull RpcAttr,
9 6e527fbc 2005-02-13 devnull RpcRead,
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,
14 6e527fbc 2005-02-13 devnull
15 6e527fbc 2005-02-13 devnull /* thread stack size - big buffers for printing */
16 cbeb0b26 2006-04-01 devnull STACK = 65536
17 6e527fbc 2005-02-13 devnull };
18 6e527fbc 2005-02-13 devnull
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;
26 6e527fbc 2005-02-13 devnull
27 6e527fbc 2005-02-13 devnull struct Rpc
28 6e527fbc 2005-02-13 devnull {
29 6e527fbc 2005-02-13 devnull int op;
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? */
33 6e527fbc 2005-02-13 devnull };
34 6e527fbc 2005-02-13 devnull
35 6e527fbc 2005-02-13 devnull struct Conv
36 6e527fbc 2005-02-13 devnull {
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 */
47 6e527fbc 2005-02-13 devnull
48 6e527fbc 2005-02-13 devnull Attr *attr; /* current attributes */
49 6e527fbc 2005-02-13 devnull Proto *proto; /* protocol */
50 6e527fbc 2005-02-13 devnull
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 */
58 6e527fbc 2005-02-13 devnull
59 6e527fbc 2005-02-13 devnull Channel *keywait; /* wait here for key confirmation */
60 6e527fbc 2005-02-13 devnull
61 6e527fbc 2005-02-13 devnull };
62 6e527fbc 2005-02-13 devnull
63 6e527fbc 2005-02-13 devnull struct Key
64 6e527fbc 2005-02-13 devnull {
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 */
71 6e527fbc 2005-02-13 devnull };
72 6e527fbc 2005-02-13 devnull
73 6e527fbc 2005-02-13 devnull struct Logbuf
74 6e527fbc 2005-02-13 devnull {
75 6e527fbc 2005-02-13 devnull Req *wait;
76 6e527fbc 2005-02-13 devnull Req **waitlast;
77 6e527fbc 2005-02-13 devnull int rp;
78 6e527fbc 2005-02-13 devnull int wp;
79 6e527fbc 2005-02-13 devnull char *msg[128];
80 6e527fbc 2005-02-13 devnull };
81 6e527fbc 2005-02-13 devnull
82 6e527fbc 2005-02-13 devnull struct Ring
83 6e527fbc 2005-02-13 devnull {
84 6e527fbc 2005-02-13 devnull Key **key;
85 6e527fbc 2005-02-13 devnull int nkey;
86 6e527fbc 2005-02-13 devnull };
87 6e527fbc 2005-02-13 devnull
88 6e527fbc 2005-02-13 devnull struct Proto
89 6e527fbc 2005-02-13 devnull {
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 */
95 6e527fbc 2005-02-13 devnull };
96 6e527fbc 2005-02-13 devnull
97 6e527fbc 2005-02-13 devnull struct Role
98 6e527fbc 2005-02-13 devnull {
99 6e527fbc 2005-02-13 devnull char *name; /* name of role */
100 6e527fbc 2005-02-13 devnull int (*fn)(Conv*); /* service function */
101 6e527fbc 2005-02-13 devnull };
102 6e527fbc 2005-02-13 devnull
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 */
114 6e527fbc 2005-02-13 devnull
115 6e527fbc 2005-02-13 devnull extern char Easproto[]; /* err.c */
116 6e527fbc 2005-02-13 devnull
117 b3e7c026 2005-03-15 devnull void fsinit0(void);
118 b3e7c026 2005-03-15 devnull
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
123 6e527fbc 2005-02-13 devnull
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
133 6e527fbc 2005-02-13 devnull
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);
144 6e527fbc 2005-02-13 devnull
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*);
151 6e527fbc 2005-02-13 devnull
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);
164 6e527fbc 2005-02-13 devnull
165 6e527fbc 2005-02-13 devnull extern int ctlwrite(char*);
166 6e527fbc 2005-02-13 devnull
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);
170 6e527fbc 2005-02-13 devnull
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 */
182 6e527fbc 2005-02-13 devnull
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 */
191 6e527fbc 2005-02-13 devnull
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*);
195 6e527fbc 2005-02-13 devnull
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);
200 6e527fbc 2005-02-13 devnull
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*);
204 6e527fbc 2005-02-13 devnull
205 6e527fbc 2005-02-13 devnull extern int memrandom(void*, int);
206 6e527fbc 2005-02-13 devnull
207 6e527fbc 2005-02-13 devnull extern Proto* protolookup(char*);
208 6e527fbc 2005-02-13 devnull
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*);
214 6e527fbc 2005-02-13 devnull
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*);
221 6e527fbc 2005-02-13 devnull
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);
227 6e527fbc 2005-02-13 devnull
228 6e527fbc 2005-02-13 devnull
229 6e527fbc 2005-02-13 devnull extern int extrafactotumdir;
230 6e527fbc 2005-02-13 devnull
231 6e527fbc 2005-02-13 devnull int havesecstore(void);
232 6e527fbc 2005-02-13 devnull int secstorefetch(void);