1 /* Copyright (c) 2004 Russ Cox */
9 #pragma varargck type "F" VtFcall*
10 #pragma varargck type "T" void
23 fprint(2, "usage: venti/devnull [-v] [-a address]\n");
24 threadexitsall("usage");
28 threadmain(int argc, char **argv)
34 fmtinstall('V', vtscorefmt);
35 fmtinstall('F', vtfcallfmt);
37 address = "tcp!*!venti";
44 address = EARGF(usage());
50 srv = vtlisten(address);
52 sysfatal("vtlisten %s: %r", address);
54 while((r = vtgetreq(srv)) != nil){
55 r->rx.msgtype = r->tx.msgtype+1;
57 fprint(2, "<- %F\n", &r->tx);
58 switch(r->tx.msgtype){
64 r->rx.error = vtstrdup("no such block");
65 r->rx.msgtype = VtRerror;
68 packetsha1(r->tx.data, r->rx.score);
74 fprint(2, "-> %F\n", &r->rx);