7 portMapPrint(Fmt *fmt, PortMap *x)
9 fmtprint(fmt, "[%ud %ud %ud %ud]", x->prog, x->vers, x->prot, x->port);
12 portMapSize(PortMap *x)
16 a = 0 + 4 + 4 + 4 + 4;
20 portMapPack(uchar *a, uchar *ea, uchar **pa, PortMap *x)
22 if(sunuint32pack(a, ea, &a, &x->prog) < 0) goto Err;
23 if(sunuint32pack(a, ea, &a, &x->vers) < 0) goto Err;
24 if(sunuint32pack(a, ea, &a, &x->prot) < 0) goto Err;
25 if(sunuint32pack(a, ea, &a, &x->port) < 0) goto Err;
33 portMapUnpack(uchar *a, uchar *ea, uchar **pa, PortMap *x)
35 if(sunuint32unpack(a, ea, &a, &x->prog) < 0) goto Err;
36 if(sunuint32unpack(a, ea, &a, &x->vers) < 0) goto Err;
37 if(sunuint32unpack(a, ea, &a, &x->prot) < 0) goto Err;
38 if(sunuint32unpack(a, ea, &a, &x->port) < 0) goto Err;
46 portTNullPrint(Fmt *fmt, PortTNull *x)
49 fmtprint(fmt, "%s", "PortTNull");
52 portTNullSize(PortTNull *x)
60 portTNullPack(uchar *a, uchar *ea, uchar **pa, PortTNull *x)
68 portTNullUnpack(uchar *a, uchar *ea, uchar **pa, PortTNull *x)
76 portRNullPrint(Fmt *fmt, PortRNull *x)
79 fmtprint(fmt, "%s", "PortRNull");
82 portRNullSize(PortRNull *x)
90 portRNullPack(uchar *a, uchar *ea, uchar **pa, PortRNull *x)
98 portRNullUnpack(uchar *a, uchar *ea, uchar **pa, PortRNull *x)
106 portTSetPrint(Fmt *fmt, PortTSet *x)
108 fmtprint(fmt, "PortTSet ");
109 portMapPrint(fmt, &x->map);
112 portTSetSize(PortTSet *x)
116 a = 0 + portMapSize(&x->map);
120 portTSetPack(uchar *a, uchar *ea, uchar **pa, PortTSet *x)
122 if(portMapPack(a, ea, &a, &x->map) < 0) goto Err;
130 portTSetUnpack(uchar *a, uchar *ea, uchar **pa, PortTSet *x)
132 if(portMapUnpack(a, ea, &a, &x->map) < 0) goto Err;
140 portRSetPrint(Fmt *fmt, PortRSet *x)
142 fmtprint(fmt, "PortRSet %ud", x->b);
145 portRSetSize(PortRSet *x)
153 portRSetPack(uchar *a, uchar *ea, uchar **pa, PortRSet *x)
155 if(sunuint1pack(a, ea, &a, &x->b) < 0) goto Err;
163 portRSetUnpack(uchar *a, uchar *ea, uchar **pa, PortRSet *x)
165 if(sunuint1unpack(a, ea, &a, &x->b) < 0) goto Err;
173 portTUnsetPrint(Fmt *fmt, PortTUnset *x)
175 fmtprint(fmt, "PortTUnset ");
176 portMapPrint(fmt, &x->map);
179 portTUnsetSize(PortTUnset *x)
183 a = 0 + portMapSize(&x->map);
187 portTUnsetPack(uchar *a, uchar *ea, uchar **pa, PortTUnset *x)
189 if(portMapPack(a, ea, &a, &x->map) < 0) goto Err;
197 portTUnsetUnpack(uchar *a, uchar *ea, uchar **pa, PortTUnset *x)
199 if(portMapUnpack(a, ea, &a, &x->map) < 0) goto Err;
207 portRUnsetPrint(Fmt *fmt, PortRUnset *x)
209 fmtprint(fmt, "PortRUnset %ud", x->b);
212 portRUnsetSize(PortRUnset *x)
220 portRUnsetPack(uchar *a, uchar *ea, uchar **pa, PortRUnset *x)
222 if(sunuint1pack(a, ea, &a, &x->b) < 0) goto Err;
230 portRUnsetUnpack(uchar *a, uchar *ea, uchar **pa, PortRUnset *x)
232 if(sunuint1unpack(a, ea, &a, &x->b) < 0) goto Err;
240 portTGetportPrint(Fmt *fmt, PortTGetport *x)
242 fmtprint(fmt, "PortTGetport ");
243 portMapPrint(fmt, &x->map);
246 portTGetportSize(PortTGetport *x)
250 a = 0 + portMapSize(&x->map);
254 portTGetportPack(uchar *a, uchar *ea, uchar **pa, PortTGetport *x)
256 if(portMapPack(a, ea, &a, &x->map) < 0) goto Err;
264 portTGetportUnpack(uchar *a, uchar *ea, uchar **pa, PortTGetport *x)
266 if(portMapUnpack(a, ea, &a, &x->map) < 0) goto Err;
274 portRGetportPrint(Fmt *fmt, PortRGetport *x)
276 fmtprint(fmt, "PortRGetport %ud", x->port);
279 portRGetportSize(PortRGetport *x)
287 portRGetportPack(uchar *a, uchar *ea, uchar **pa, PortRGetport *x)
289 if(sunuint32pack(a, ea, &a, &x->port) < 0) goto Err;
297 portRGetportUnpack(uchar *a, uchar *ea, uchar **pa, PortRGetport *x)
299 if(sunuint32unpack(a, ea, &a, &x->port) < 0) goto Err;
307 portTDumpPrint(Fmt *fmt, PortTDump *x)
310 fmtprint(fmt, "PortTDump");
313 portTDumpSize(PortTDump *x)
321 portTDumpPack(uchar *a, uchar *ea, uchar **pa, PortTDump *x)
329 portTDumpUnpack(uchar *a, uchar *ea, uchar **pa, PortTDump *x)
337 portRDumpPrint(Fmt *fmt, PortRDump *x)
341 fmtprint(fmt, "PortRDump");
342 for(i=0; i<x->nmap; i++){
344 portMapPrint(fmt, &x->map[i]);
348 portRDumpSize(PortRDump *x)
350 return (5*4*x->nmap) + 4;
353 portRDumpPack(uchar *a, uchar *ea, uchar **pa, PortRDump *x)
360 for(i=0; i<x->nmap; i++){
361 if(sunuint32pack(a, ea, &a, &one) < 0
362 || portMapPack(a, ea, &a, &x->map[i]) < 0)
365 if(sunuint32pack(a, ea, &a, &zero) < 0)
374 portRDumpUnpack(uchar *a, uchar *ea, uchar **pa, PortRDump *x)
382 if(sunuint1unpack(a, ea, &a, &u1) < 0)
386 if(portMapUnpack(a, ea, &a, &m[i]) < 0)
399 portTCallitPrint(Fmt *fmt, PortTCallit *x)
401 fmtprint(fmt, "PortTCallit [%ud,%ud,%ud] %ud", x->prog, x->vers, x->proc, x->count);
404 portTCallitSize(PortTCallit *x)
408 a = 0 + 4 + 4 + 4 + sunvaropaquesize(x->count);
412 portTCallitPack(uchar *a, uchar *ea, uchar **pa, PortTCallit *x)
414 if(sunuint32pack(a, ea, &a, &x->prog) < 0) goto Err;
415 if(sunuint32pack(a, ea, &a, &x->vers) < 0) goto Err;
416 if(sunuint32pack(a, ea, &a, &x->proc) < 0) goto Err;
417 if(sunvaropaquepack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
425 portTCallitUnpack(uchar *a, uchar *ea, uchar **pa, PortTCallit *x)
427 if(sunuint32unpack(a, ea, &a, &x->prog) < 0) goto Err;
428 if(sunuint32unpack(a, ea, &a, &x->vers) < 0) goto Err;
429 if(sunuint32unpack(a, ea, &a, &x->proc) < 0) goto Err;
430 if(sunvaropaqueunpack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
438 portRCallitPrint(Fmt *fmt, PortRCallit *x)
440 fmtprint(fmt, "PortRCallit %ud %ud", x->port, x->count);
443 portRCallitSize(PortRCallit *x)
447 a = 0 + 4 + sunvaropaquesize(x->count);
451 portRCallitPack(uchar *a, uchar *ea, uchar **pa, PortRCallit *x)
453 if(sunuint32pack(a, ea, &a, &x->port) < 0) goto Err;
454 if(sunvaropaquepack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
462 portRCallitUnpack(uchar *a, uchar *ea, uchar **pa, PortRCallit *x)
464 if(sunuint32unpack(a, ea, &a, &x->port) < 0) goto Err;
465 if(sunvaropaqueunpack(a, ea, &a, &x->data, &x->count, -1) < 0) goto Err;
473 typedef int (*P)(uchar*, uchar*, uchar**, SunCall*);
474 typedef void (*F)(Fmt*, SunCall*);
475 typedef uint (*S)(SunCall*);
477 static SunProc proc[] = {
478 (P)portTNullPack, (P)portTNullUnpack, (S)portTNullSize, (F)portTNullPrint, sizeof(PortTNull),
479 (P)portRNullPack, (P)portRNullUnpack, (S)portRNullSize, (F)portRNullPrint, sizeof(PortRNull),
480 (P)portTSetPack, (P)portTSetUnpack, (S)portTSetSize, (F)portTSetPrint, sizeof(PortTSet),
481 (P)portRSetPack, (P)portRSetUnpack, (S)portRSetSize, (F)portRSetPrint, sizeof(PortRSet),
482 (P)portTUnsetPack, (P)portTUnsetUnpack, (S)portTUnsetSize, (F)portTUnsetPrint, sizeof(PortTUnset),
483 (P)portRUnsetPack, (P)portRUnsetUnpack, (S)portRUnsetSize, (F)portRUnsetPrint, sizeof(PortRUnset),
484 (P)portTGetportPack, (P)portTGetportUnpack, (S)portTGetportSize, (F)portTGetportPrint, sizeof(PortTGetport),
485 (P)portRGetportPack, (P)portRGetportUnpack, (S)portRGetportSize, (F)portRGetportPrint, sizeof(PortRGetport),
486 (P)portTDumpPack, (P)portTDumpUnpack, (S)portTDumpSize, (F)portTDumpPrint, sizeof(PortTDump),
487 (P)portRDumpPack, (P)portRDumpUnpack, (S)portRDumpSize, (F)portRDumpPrint, sizeof(PortRDump),
488 (P)portTCallitPack, (P)portTCallitUnpack, (S)portTCallitSize, (F)portTCallitPrint, sizeof(PortTCallit),
489 (P)portRCallitPack, (P)portRCallitUnpack, (S)portRCallitSize, (F)portRCallitPrint, sizeof(PortRCallit),