Blame


1 551445b9 2004-04-21 devnull #include <u.h>
2 551445b9 2004-04-21 devnull #include <libc.h>
3 551445b9 2004-04-21 devnull #include <thread.h>
4 551445b9 2004-04-21 devnull #include <sunrpc.h>
5 551445b9 2004-04-21 devnull
6 551445b9 2004-04-21 devnull static void
7 551445b9 2004-04-21 devnull portMapPrint(Fmt *fmt, PortMap *x)
8 551445b9 2004-04-21 devnull {
9 551445b9 2004-04-21 devnull fmtprint(fmt, "[%ud %ud %ud %ud]", x->prog, x->vers, x->prot, x->port);
10 551445b9 2004-04-21 devnull }
11 551445b9 2004-04-21 devnull static uint
12 551445b9 2004-04-21 devnull portMapSize(PortMap *x)
13 551445b9 2004-04-21 devnull {
14 551445b9 2004-04-21 devnull uint a;
15 551445b9 2004-04-21 devnull USED(x);
16 551445b9 2004-04-21 devnull a = 0 + 4 + 4 + 4 + 4;
17 551445b9 2004-04-21 devnull return a;
18 551445b9 2004-04-21 devnull }
19 551445b9 2004-04-21 devnull static int
20 551445b9 2004-04-21 devnull portMapPack(uchar *a, uchar *ea, uchar **pa, PortMap *x)
21 551445b9 2004-04-21 devnull {
22 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->prog) < 0) goto Err;
23 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->vers) < 0) goto Err;
24 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->prot) < 0) goto Err;
25 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->port) < 0) goto Err;
26 551445b9 2004-04-21 devnull *pa = a;
27 551445b9 2004-04-21 devnull return 0;
28 551445b9 2004-04-21 devnull Err:
29 551445b9 2004-04-21 devnull *pa = ea;
30 551445b9 2004-04-21 devnull return -1;
31 551445b9 2004-04-21 devnull }
32 551445b9 2004-04-21 devnull static int
33 551445b9 2004-04-21 devnull portMapUnpack(uchar *a, uchar *ea, uchar **pa, PortMap *x)
34 551445b9 2004-04-21 devnull {
35 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->prog) < 0) goto Err;
36 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->vers) < 0) goto Err;
37 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->prot) < 0) goto Err;
38 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->port) < 0) goto Err;
39 551445b9 2004-04-21 devnull *pa = a;
40 551445b9 2004-04-21 devnull return 0;
41 551445b9 2004-04-21 devnull Err:
42 551445b9 2004-04-21 devnull *pa = ea;
43 551445b9 2004-04-21 devnull return -1;
44 551445b9 2004-04-21 devnull }
45 551445b9 2004-04-21 devnull static void
46 551445b9 2004-04-21 devnull portTNullPrint(Fmt *fmt, PortTNull *x)
47 551445b9 2004-04-21 devnull {
48 551445b9 2004-04-21 devnull USED(x);
49 551445b9 2004-04-21 devnull fmtprint(fmt, "%s", "PortTNull");
50 551445b9 2004-04-21 devnull }
51 551445b9 2004-04-21 devnull static uint
52 551445b9 2004-04-21 devnull portTNullSize(PortTNull *x)
53 551445b9 2004-04-21 devnull {
54 551445b9 2004-04-21 devnull uint a;
55 551445b9 2004-04-21 devnull USED(x);
56 551445b9 2004-04-21 devnull a = 0;
57 551445b9 2004-04-21 devnull return a;
58 551445b9 2004-04-21 devnull }
59 551445b9 2004-04-21 devnull static int
60 551445b9 2004-04-21 devnull portTNullPack(uchar *a, uchar *ea, uchar **pa, PortTNull *x)
61 551445b9 2004-04-21 devnull {
62 551445b9 2004-04-21 devnull USED(ea);
63 551445b9 2004-04-21 devnull USED(x);
64 551445b9 2004-04-21 devnull *pa = a;
65 551445b9 2004-04-21 devnull return 0;
66 551445b9 2004-04-21 devnull }
67 551445b9 2004-04-21 devnull static int
68 551445b9 2004-04-21 devnull portTNullUnpack(uchar *a, uchar *ea, uchar **pa, PortTNull *x)
69 551445b9 2004-04-21 devnull {
70 551445b9 2004-04-21 devnull USED(ea);
71 551445b9 2004-04-21 devnull USED(x);
72 551445b9 2004-04-21 devnull *pa = a;
73 551445b9 2004-04-21 devnull return 0;
74 551445b9 2004-04-21 devnull }
75 551445b9 2004-04-21 devnull static void
76 551445b9 2004-04-21 devnull portRNullPrint(Fmt *fmt, PortRNull *x)
77 551445b9 2004-04-21 devnull {
78 551445b9 2004-04-21 devnull USED(x);
79 551445b9 2004-04-21 devnull fmtprint(fmt, "%s", "PortRNull");
80 551445b9 2004-04-21 devnull }
81 551445b9 2004-04-21 devnull static uint
82 551445b9 2004-04-21 devnull portRNullSize(PortRNull *x)
83 551445b9 2004-04-21 devnull {
84 551445b9 2004-04-21 devnull uint a;
85 551445b9 2004-04-21 devnull USED(x);
86 551445b9 2004-04-21 devnull a = 0;
87 551445b9 2004-04-21 devnull return a;
88 551445b9 2004-04-21 devnull }
89 551445b9 2004-04-21 devnull static int
90 551445b9 2004-04-21 devnull portRNullPack(uchar *a, uchar *ea, uchar **pa, PortRNull *x)
91 551445b9 2004-04-21 devnull {
92 551445b9 2004-04-21 devnull USED(ea);
93 551445b9 2004-04-21 devnull USED(x);
94 551445b9 2004-04-21 devnull *pa = a;
95 551445b9 2004-04-21 devnull return 0;
96 551445b9 2004-04-21 devnull }
97 551445b9 2004-04-21 devnull static int
98 551445b9 2004-04-21 devnull portRNullUnpack(uchar *a, uchar *ea, uchar **pa, PortRNull *x)
99 551445b9 2004-04-21 devnull {
100 551445b9 2004-04-21 devnull USED(ea);
101 551445b9 2004-04-21 devnull USED(x);
102 551445b9 2004-04-21 devnull *pa = a;
103 551445b9 2004-04-21 devnull return 0;
104 551445b9 2004-04-21 devnull }
105 551445b9 2004-04-21 devnull static void
106 551445b9 2004-04-21 devnull portTSetPrint(Fmt *fmt, PortTSet *x)
107 551445b9 2004-04-21 devnull {
108 551445b9 2004-04-21 devnull fmtprint(fmt, "PortTSet ");
109 551445b9 2004-04-21 devnull portMapPrint(fmt, &x->map);
110 551445b9 2004-04-21 devnull }
111 551445b9 2004-04-21 devnull static uint
112 551445b9 2004-04-21 devnull portTSetSize(PortTSet *x)
113 551445b9 2004-04-21 devnull {
114 551445b9 2004-04-21 devnull uint a;
115 551445b9 2004-04-21 devnull USED(x);
116 551445b9 2004-04-21 devnull a = 0 + portMapSize(&x->map);
117 551445b9 2004-04-21 devnull return a;
118 551445b9 2004-04-21 devnull }
119 551445b9 2004-04-21 devnull static int
120 551445b9 2004-04-21 devnull portTSetPack(uchar *a, uchar *ea, uchar **pa, PortTSet *x)
121 551445b9 2004-04-21 devnull {
122 551445b9 2004-04-21 devnull if(portMapPack(a, ea, &a, &x->map) < 0) goto Err;
123 551445b9 2004-04-21 devnull *pa = a;
124 551445b9 2004-04-21 devnull return 0;
125 551445b9 2004-04-21 devnull Err:
126 551445b9 2004-04-21 devnull *pa = ea;
127 551445b9 2004-04-21 devnull return -1;
128 551445b9 2004-04-21 devnull }
129 551445b9 2004-04-21 devnull static int
130 551445b9 2004-04-21 devnull portTSetUnpack(uchar *a, uchar *ea, uchar **pa, PortTSet *x)
131 551445b9 2004-04-21 devnull {
132 551445b9 2004-04-21 devnull if(portMapUnpack(a, ea, &a, &x->map) < 0) goto Err;
133 551445b9 2004-04-21 devnull *pa = a;
134 551445b9 2004-04-21 devnull return 0;
135 551445b9 2004-04-21 devnull Err:
136 551445b9 2004-04-21 devnull *pa = ea;
137 551445b9 2004-04-21 devnull return -1;
138 551445b9 2004-04-21 devnull }
139 551445b9 2004-04-21 devnull static void
140 551445b9 2004-04-21 devnull portRSetPrint(Fmt *fmt, PortRSet *x)
141 551445b9 2004-04-21 devnull {
142 551445b9 2004-04-21 devnull fmtprint(fmt, "PortRSet %ud", x->b);
143 551445b9 2004-04-21 devnull }
144 551445b9 2004-04-21 devnull static uint
145 551445b9 2004-04-21 devnull portRSetSize(PortRSet *x)
146 551445b9 2004-04-21 devnull {
147 551445b9 2004-04-21 devnull uint a;
148 551445b9 2004-04-21 devnull USED(x);
149 551445b9 2004-04-21 devnull a = 0 + 4;
150 551445b9 2004-04-21 devnull return a;
151 551445b9 2004-04-21 devnull }
152 551445b9 2004-04-21 devnull static int
153 551445b9 2004-04-21 devnull portRSetPack(uchar *a, uchar *ea, uchar **pa, PortRSet *x)
154 551445b9 2004-04-21 devnull {
155 551445b9 2004-04-21 devnull if(sunuint1pack(a, ea, &a, &x->b) < 0) goto Err;
156 551445b9 2004-04-21 devnull *pa = a;
157 551445b9 2004-04-21 devnull return 0;
158 551445b9 2004-04-21 devnull Err:
159 551445b9 2004-04-21 devnull *pa = ea;
160 551445b9 2004-04-21 devnull return -1;
161 551445b9 2004-04-21 devnull }
162 551445b9 2004-04-21 devnull static int
163 551445b9 2004-04-21 devnull portRSetUnpack(uchar *a, uchar *ea, uchar **pa, PortRSet *x)
164 551445b9 2004-04-21 devnull {
165 551445b9 2004-04-21 devnull if(sunuint1unpack(a, ea, &a, &x->b) < 0) goto Err;
166 551445b9 2004-04-21 devnull *pa = a;
167 551445b9 2004-04-21 devnull return 0;
168 551445b9 2004-04-21 devnull Err:
169 551445b9 2004-04-21 devnull *pa = ea;
170 551445b9 2004-04-21 devnull return -1;
171 551445b9 2004-04-21 devnull }
172 551445b9 2004-04-21 devnull static void
173 551445b9 2004-04-21 devnull portTUnsetPrint(Fmt *fmt, PortTUnset *x)
174 551445b9 2004-04-21 devnull {
175 551445b9 2004-04-21 devnull fmtprint(fmt, "PortTUnset ");
176 551445b9 2004-04-21 devnull portMapPrint(fmt, &x->map);
177 551445b9 2004-04-21 devnull }
178 551445b9 2004-04-21 devnull static uint
179 551445b9 2004-04-21 devnull portTUnsetSize(PortTUnset *x)
180 551445b9 2004-04-21 devnull {
181 551445b9 2004-04-21 devnull uint a;
182 551445b9 2004-04-21 devnull USED(x);
183 551445b9 2004-04-21 devnull a = 0 + portMapSize(&x->map);
184 551445b9 2004-04-21 devnull return a;
185 551445b9 2004-04-21 devnull }
186 551445b9 2004-04-21 devnull static int
187 551445b9 2004-04-21 devnull portTUnsetPack(uchar *a, uchar *ea, uchar **pa, PortTUnset *x)
188 551445b9 2004-04-21 devnull {
189 551445b9 2004-04-21 devnull if(portMapPack(a, ea, &a, &x->map) < 0) goto Err;
190 551445b9 2004-04-21 devnull *pa = a;
191 551445b9 2004-04-21 devnull return 0;
192 551445b9 2004-04-21 devnull Err:
193 551445b9 2004-04-21 devnull *pa = ea;
194 551445b9 2004-04-21 devnull return -1;
195 551445b9 2004-04-21 devnull }
196 551445b9 2004-04-21 devnull static int
197 551445b9 2004-04-21 devnull portTUnsetUnpack(uchar *a, uchar *ea, uchar **pa, PortTUnset *x)
198 551445b9 2004-04-21 devnull {
199 551445b9 2004-04-21 devnull if(portMapUnpack(a, ea, &a, &x->map) < 0) goto Err;
200 551445b9 2004-04-21 devnull *pa = a;
201 551445b9 2004-04-21 devnull return 0;
202 551445b9 2004-04-21 devnull Err:
203 551445b9 2004-04-21 devnull *pa = ea;
204 551445b9 2004-04-21 devnull return -1;
205 551445b9 2004-04-21 devnull }
206 551445b9 2004-04-21 devnull static void
207 551445b9 2004-04-21 devnull portRUnsetPrint(Fmt *fmt, PortRUnset *x)
208 551445b9 2004-04-21 devnull {
209 551445b9 2004-04-21 devnull fmtprint(fmt, "PortRUnset %ud", x->b);
210 551445b9 2004-04-21 devnull }
211 551445b9 2004-04-21 devnull static uint
212 551445b9 2004-04-21 devnull portRUnsetSize(PortRUnset *x)
213 551445b9 2004-04-21 devnull {
214 551445b9 2004-04-21 devnull uint a;
215 551445b9 2004-04-21 devnull USED(x);
216 551445b9 2004-04-21 devnull a = 0 + 4;
217 551445b9 2004-04-21 devnull return a;
218 551445b9 2004-04-21 devnull }
219 551445b9 2004-04-21 devnull static int
220 551445b9 2004-04-21 devnull portRUnsetPack(uchar *a, uchar *ea, uchar **pa, PortRUnset *x)
221 551445b9 2004-04-21 devnull {
222 551445b9 2004-04-21 devnull if(sunuint1pack(a, ea, &a, &x->b) < 0) goto Err;
223 551445b9 2004-04-21 devnull *pa = a;
224 551445b9 2004-04-21 devnull return 0;
225 551445b9 2004-04-21 devnull Err:
226 551445b9 2004-04-21 devnull *pa = ea;
227 551445b9 2004-04-21 devnull return -1;
228 551445b9 2004-04-21 devnull }
229 551445b9 2004-04-21 devnull static int
230 551445b9 2004-04-21 devnull portRUnsetUnpack(uchar *a, uchar *ea, uchar **pa, PortRUnset *x)
231 551445b9 2004-04-21 devnull {
232 551445b9 2004-04-21 devnull if(sunuint1unpack(a, ea, &a, &x->b) < 0) goto Err;
233 551445b9 2004-04-21 devnull *pa = a;
234 551445b9 2004-04-21 devnull return 0;
235 551445b9 2004-04-21 devnull Err:
236 551445b9 2004-04-21 devnull *pa = ea;
237 551445b9 2004-04-21 devnull return -1;
238 551445b9 2004-04-21 devnull }
239 551445b9 2004-04-21 devnull static void
240 551445b9 2004-04-21 devnull portTGetportPrint(Fmt *fmt, PortTGetport *x)
241 551445b9 2004-04-21 devnull {
242 551445b9 2004-04-21 devnull fmtprint(fmt, "PortTGetport ");
243 551445b9 2004-04-21 devnull portMapPrint(fmt, &x->map);
244 551445b9 2004-04-21 devnull }
245 551445b9 2004-04-21 devnull static uint
246 551445b9 2004-04-21 devnull portTGetportSize(PortTGetport *x)
247 551445b9 2004-04-21 devnull {
248 551445b9 2004-04-21 devnull uint a;
249 551445b9 2004-04-21 devnull USED(x);
250 551445b9 2004-04-21 devnull a = 0 + portMapSize(&x->map);
251 551445b9 2004-04-21 devnull return a;
252 551445b9 2004-04-21 devnull }
253 551445b9 2004-04-21 devnull static int
254 551445b9 2004-04-21 devnull portTGetportPack(uchar *a, uchar *ea, uchar **pa, PortTGetport *x)
255 551445b9 2004-04-21 devnull {
256 551445b9 2004-04-21 devnull if(portMapPack(a, ea, &a, &x->map) < 0) goto Err;
257 551445b9 2004-04-21 devnull *pa = a;
258 551445b9 2004-04-21 devnull return 0;
259 551445b9 2004-04-21 devnull Err:
260 551445b9 2004-04-21 devnull *pa = ea;
261 551445b9 2004-04-21 devnull return -1;
262 551445b9 2004-04-21 devnull }
263 551445b9 2004-04-21 devnull static int
264 551445b9 2004-04-21 devnull portTGetportUnpack(uchar *a, uchar *ea, uchar **pa, PortTGetport *x)
265 551445b9 2004-04-21 devnull {
266 551445b9 2004-04-21 devnull if(portMapUnpack(a, ea, &a, &x->map) < 0) goto Err;
267 551445b9 2004-04-21 devnull *pa = a;
268 551445b9 2004-04-21 devnull return 0;
269 551445b9 2004-04-21 devnull Err:
270 551445b9 2004-04-21 devnull *pa = ea;
271 551445b9 2004-04-21 devnull return -1;
272 551445b9 2004-04-21 devnull }
273 551445b9 2004-04-21 devnull static void
274 551445b9 2004-04-21 devnull portRGetportPrint(Fmt *fmt, PortRGetport *x)
275 551445b9 2004-04-21 devnull {
276 551445b9 2004-04-21 devnull fmtprint(fmt, "PortRGetport %ud", x->port);
277 551445b9 2004-04-21 devnull }
278 551445b9 2004-04-21 devnull static uint
279 551445b9 2004-04-21 devnull portRGetportSize(PortRGetport *x)
280 551445b9 2004-04-21 devnull {
281 551445b9 2004-04-21 devnull uint a;
282 551445b9 2004-04-21 devnull USED(x);
283 551445b9 2004-04-21 devnull a = 0 + 4;
284 551445b9 2004-04-21 devnull return a;
285 551445b9 2004-04-21 devnull }
286 551445b9 2004-04-21 devnull static int
287 551445b9 2004-04-21 devnull portRGetportPack(uchar *a, uchar *ea, uchar **pa, PortRGetport *x)
288 551445b9 2004-04-21 devnull {
289 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->port) < 0) goto Err;
290 551445b9 2004-04-21 devnull *pa = a;
291 551445b9 2004-04-21 devnull return 0;
292 551445b9 2004-04-21 devnull Err:
293 551445b9 2004-04-21 devnull *pa = ea;
294 551445b9 2004-04-21 devnull return -1;
295 551445b9 2004-04-21 devnull }
296 551445b9 2004-04-21 devnull static int
297 551445b9 2004-04-21 devnull portRGetportUnpack(uchar *a, uchar *ea, uchar **pa, PortRGetport *x)
298 551445b9 2004-04-21 devnull {
299 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->port) < 0) goto Err;
300 551445b9 2004-04-21 devnull *pa = a;
301 551445b9 2004-04-21 devnull return 0;
302 551445b9 2004-04-21 devnull Err:
303 551445b9 2004-04-21 devnull *pa = ea;
304 551445b9 2004-04-21 devnull return -1;
305 551445b9 2004-04-21 devnull }
306 551445b9 2004-04-21 devnull static void
307 551445b9 2004-04-21 devnull portTDumpPrint(Fmt *fmt, PortTDump *x)
308 551445b9 2004-04-21 devnull {
309 551445b9 2004-04-21 devnull USED(x);
310 551445b9 2004-04-21 devnull fmtprint(fmt, "PortTDump");
311 551445b9 2004-04-21 devnull }
312 551445b9 2004-04-21 devnull static uint
313 551445b9 2004-04-21 devnull portTDumpSize(PortTDump *x)
314 551445b9 2004-04-21 devnull {
315 551445b9 2004-04-21 devnull uint a;
316 551445b9 2004-04-21 devnull USED(x);
317 551445b9 2004-04-21 devnull a = 0;
318 551445b9 2004-04-21 devnull return a;
319 551445b9 2004-04-21 devnull }
320 551445b9 2004-04-21 devnull static int
321 551445b9 2004-04-21 devnull portTDumpPack(uchar *a, uchar *ea, uchar **pa, PortTDump *x)
322 551445b9 2004-04-21 devnull {
323 551445b9 2004-04-21 devnull USED(ea);
324 551445b9 2004-04-21 devnull USED(x);
325 551445b9 2004-04-21 devnull *pa = a;
326 551445b9 2004-04-21 devnull return 0;
327 551445b9 2004-04-21 devnull }
328 551445b9 2004-04-21 devnull static int
329 551445b9 2004-04-21 devnull portTDumpUnpack(uchar *a, uchar *ea, uchar **pa, PortTDump *x)
330 551445b9 2004-04-21 devnull {
331 551445b9 2004-04-21 devnull USED(ea);
332 551445b9 2004-04-21 devnull USED(x);
333 551445b9 2004-04-21 devnull *pa = a;
334 551445b9 2004-04-21 devnull return 0;
335 551445b9 2004-04-21 devnull }
336 551445b9 2004-04-21 devnull static void
337 551445b9 2004-04-21 devnull portRDumpPrint(Fmt *fmt, PortRDump *x)
338 551445b9 2004-04-21 devnull {
339 551445b9 2004-04-21 devnull int i;
340 551445b9 2004-04-21 devnull
341 551445b9 2004-04-21 devnull fmtprint(fmt, "PortRDump");
342 551445b9 2004-04-21 devnull for(i=0; i<x->nmap; i++){
343 551445b9 2004-04-21 devnull fmtprint(fmt, " ");
344 551445b9 2004-04-21 devnull portMapPrint(fmt, &x->map[i]);
345 551445b9 2004-04-21 devnull }
346 551445b9 2004-04-21 devnull }
347 551445b9 2004-04-21 devnull static uint
348 551445b9 2004-04-21 devnull portRDumpSize(PortRDump *x)
349 551445b9 2004-04-21 devnull {
350 551445b9 2004-04-21 devnull return (5*4*x->nmap) + 4;
351 551445b9 2004-04-21 devnull }
352 551445b9 2004-04-21 devnull static int
353 551445b9 2004-04-21 devnull portRDumpPack(uchar *a, uchar *ea, uchar **pa, PortRDump *x)
354 551445b9 2004-04-21 devnull {
355 551445b9 2004-04-21 devnull int i;
356 551445b9 2004-04-21 devnull u32int zero, one;
357 551445b9 2004-04-21 devnull
358 551445b9 2004-04-21 devnull zero = 0;
359 551445b9 2004-04-21 devnull one = 1;
360 551445b9 2004-04-21 devnull for(i=0; i<x->nmap; i++){
361 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &one) < 0
362 551445b9 2004-04-21 devnull || portMapPack(a, ea, &a, &x->map[i]) < 0)
363 551445b9 2004-04-21 devnull goto Err;
364 551445b9 2004-04-21 devnull }
365 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &zero) < 0)
366 551445b9 2004-04-21 devnull goto Err;
367 551445b9 2004-04-21 devnull *pa = a;
368 551445b9 2004-04-21 devnull return 0;
369 551445b9 2004-04-21 devnull Err:
370 551445b9 2004-04-21 devnull *pa = ea;
371 551445b9 2004-04-21 devnull return -1;
372 551445b9 2004-04-21 devnull }
373 551445b9 2004-04-21 devnull static int
374 551445b9 2004-04-21 devnull portRDumpUnpack(uchar *a, uchar *ea, uchar **pa, PortRDump *x)
375 551445b9 2004-04-21 devnull {
376 551445b9 2004-04-21 devnull int i;
377 551445b9 2004-04-21 devnull u1int u1;
378 551445b9 2004-04-21 devnull PortMap *m;
379 551445b9 2004-04-21 devnull
380 551445b9 2004-04-21 devnull m = (PortMap*)a;
381 551445b9 2004-04-21 devnull for(i=0;; i++){
382 551445b9 2004-04-21 devnull if(sunuint1unpack(a, ea, &a, &u1) < 0)
383 551445b9 2004-04-21 devnull goto Err;
384 551445b9 2004-04-21 devnull if(u1 == 0)
385 551445b9 2004-04-21 devnull break;
386 551445b9 2004-04-21 devnull if(portMapUnpack(a, ea, &a, &m[i]) < 0)
387 551445b9 2004-04-21 devnull goto Err;
388 551445b9 2004-04-21 devnull }
389 551445b9 2004-04-21 devnull x->nmap = i;
390 551445b9 2004-04-21 devnull x->map = m;
391 551445b9 2004-04-21 devnull *pa = a;
392 551445b9 2004-04-21 devnull return 0;
393 551445b9 2004-04-21 devnull
394 551445b9 2004-04-21 devnull Err:
395 551445b9 2004-04-21 devnull *pa = ea;
396 551445b9 2004-04-21 devnull return -1;
397 551445b9 2004-04-21 devnull }
398 551445b9 2004-04-21 devnull static void
399 551445b9 2004-04-21 devnull portTCallitPrint(Fmt *fmt, PortTCallit *x)
400 551445b9 2004-04-21 devnull {
401 551445b9 2004-04-21 devnull fmtprint(fmt, "PortTCallit [%ud,%ud,%ud] %ud", x->prog, x->vers, x->proc, x->count);
402 551445b9 2004-04-21 devnull }
403 551445b9 2004-04-21 devnull static uint
404 551445b9 2004-04-21 devnull portTCallitSize(PortTCallit *x)
405 551445b9 2004-04-21 devnull {
406 551445b9 2004-04-21 devnull uint a;
407 551445b9 2004-04-21 devnull USED(x);
408 551445b9 2004-04-21 devnull a = 0 + 4 + 4 + 4 + sunvaropaquesize(x->count);
409 551445b9 2004-04-21 devnull return a;
410 551445b9 2004-04-21 devnull }
411 551445b9 2004-04-21 devnull static int
412 551445b9 2004-04-21 devnull portTCallitPack(uchar *a, uchar *ea, uchar **pa, PortTCallit *x)
413 551445b9 2004-04-21 devnull {
414 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->prog) < 0) goto Err;
415 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->vers) < 0) goto Err;
416 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->proc) < 0) goto Err;
417 551445b9 2004-04-21 devnull if(sunvaropaquepack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
418 551445b9 2004-04-21 devnull *pa = a;
419 551445b9 2004-04-21 devnull return 0;
420 551445b9 2004-04-21 devnull Err:
421 551445b9 2004-04-21 devnull *pa = ea;
422 551445b9 2004-04-21 devnull return -1;
423 551445b9 2004-04-21 devnull }
424 551445b9 2004-04-21 devnull static int
425 551445b9 2004-04-21 devnull portTCallitUnpack(uchar *a, uchar *ea, uchar **pa, PortTCallit *x)
426 551445b9 2004-04-21 devnull {
427 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->prog) < 0) goto Err;
428 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->vers) < 0) goto Err;
429 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->proc) < 0) goto Err;
430 551445b9 2004-04-21 devnull if(sunvaropaqueunpack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
431 551445b9 2004-04-21 devnull *pa = a;
432 551445b9 2004-04-21 devnull return 0;
433 551445b9 2004-04-21 devnull Err:
434 551445b9 2004-04-21 devnull *pa = ea;
435 551445b9 2004-04-21 devnull return -1;
436 551445b9 2004-04-21 devnull }
437 551445b9 2004-04-21 devnull static void
438 551445b9 2004-04-21 devnull portRCallitPrint(Fmt *fmt, PortRCallit *x)
439 551445b9 2004-04-21 devnull {
440 551445b9 2004-04-21 devnull fmtprint(fmt, "PortRCallit %ud %ud", x->port, x->count);
441 551445b9 2004-04-21 devnull }
442 551445b9 2004-04-21 devnull static uint
443 551445b9 2004-04-21 devnull portRCallitSize(PortRCallit *x)
444 551445b9 2004-04-21 devnull {
445 551445b9 2004-04-21 devnull uint a;
446 551445b9 2004-04-21 devnull USED(x);
447 551445b9 2004-04-21 devnull a = 0 + 4 + sunvaropaquesize(x->count);
448 551445b9 2004-04-21 devnull return a;
449 551445b9 2004-04-21 devnull }
450 551445b9 2004-04-21 devnull static int
451 551445b9 2004-04-21 devnull portRCallitPack(uchar *a, uchar *ea, uchar **pa, PortRCallit *x)
452 551445b9 2004-04-21 devnull {
453 551445b9 2004-04-21 devnull if(sunuint32pack(a, ea, &a, &x->port) < 0) goto Err;
454 551445b9 2004-04-21 devnull if(sunvaropaquepack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
455 551445b9 2004-04-21 devnull *pa = a;
456 551445b9 2004-04-21 devnull return 0;
457 551445b9 2004-04-21 devnull Err:
458 551445b9 2004-04-21 devnull *pa = ea;
459 551445b9 2004-04-21 devnull return -1;
460 551445b9 2004-04-21 devnull }
461 551445b9 2004-04-21 devnull static int
462 551445b9 2004-04-21 devnull portRCallitUnpack(uchar *a, uchar *ea, uchar **pa, PortRCallit *x)
463 551445b9 2004-04-21 devnull {
464 551445b9 2004-04-21 devnull if(sunuint32unpack(a, ea, &a, &x->port) < 0) goto Err;
465 551445b9 2004-04-21 devnull if(sunvaropaqueunpack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
466 551445b9 2004-04-21 devnull *pa = a;
467 551445b9 2004-04-21 devnull return 0;
468 551445b9 2004-04-21 devnull Err:
469 551445b9 2004-04-21 devnull *pa = ea;
470 551445b9 2004-04-21 devnull return -1;
471 551445b9 2004-04-21 devnull }
472 551445b9 2004-04-21 devnull
473 551445b9 2004-04-21 devnull typedef int (*P)(uchar*, uchar*, uchar**, SunCall*);
474 551445b9 2004-04-21 devnull typedef void (*F)(Fmt*, SunCall*);
475 551445b9 2004-04-21 devnull typedef uint (*S)(SunCall*);
476 551445b9 2004-04-21 devnull
477 551445b9 2004-04-21 devnull static SunProc proc[] = {
478 551445b9 2004-04-21 devnull (P)portTNullPack, (P)portTNullUnpack, (S)portTNullSize, (F)portTNullPrint, sizeof(PortTNull),
479 551445b9 2004-04-21 devnull (P)portRNullPack, (P)portRNullUnpack, (S)portRNullSize, (F)portRNullPrint, sizeof(PortRNull),
480 551445b9 2004-04-21 devnull (P)portTSetPack, (P)portTSetUnpack, (S)portTSetSize, (F)portTSetPrint, sizeof(PortTSet),
481 551445b9 2004-04-21 devnull (P)portRSetPack, (P)portRSetUnpack, (S)portRSetSize, (F)portRSetPrint, sizeof(PortRSet),
482 551445b9 2004-04-21 devnull (P)portTUnsetPack, (P)portTUnsetUnpack, (S)portTUnsetSize, (F)portTUnsetPrint, sizeof(PortTUnset),
483 551445b9 2004-04-21 devnull (P)portRUnsetPack, (P)portRUnsetUnpack, (S)portRUnsetSize, (F)portRUnsetPrint, sizeof(PortRUnset),
484 551445b9 2004-04-21 devnull (P)portTGetportPack, (P)portTGetportUnpack, (S)portTGetportSize, (F)portTGetportPrint, sizeof(PortTGetport),
485 551445b9 2004-04-21 devnull (P)portRGetportPack, (P)portRGetportUnpack, (S)portRGetportSize, (F)portRGetportPrint, sizeof(PortRGetport),
486 551445b9 2004-04-21 devnull (P)portTDumpPack, (P)portTDumpUnpack, (S)portTDumpSize, (F)portTDumpPrint, sizeof(PortTDump),
487 551445b9 2004-04-21 devnull (P)portRDumpPack, (P)portRDumpUnpack, (S)portRDumpSize, (F)portRDumpPrint, sizeof(PortRDump),
488 551445b9 2004-04-21 devnull (P)portTCallitPack, (P)portTCallitUnpack, (S)portTCallitSize, (F)portTCallitPrint, sizeof(PortTCallit),
489 551445b9 2004-04-21 devnull (P)portRCallitPack, (P)portRCallitUnpack, (S)portRCallitSize, (F)portRCallitPrint, sizeof(PortRCallit),
490 551445b9 2004-04-21 devnull };
491 551445b9 2004-04-21 devnull
492 fa325e9b 2020-01-10 cross SunProg portprog =
493 551445b9 2004-04-21 devnull {
494 551445b9 2004-04-21 devnull PortProgram,
495 551445b9 2004-04-21 devnull PortVersion,
496 551445b9 2004-04-21 devnull proc,
497 551445b9 2004-04-21 devnull nelem(proc),
498 551445b9 2004-04-21 devnull };