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)
35 fmtinstall('V', vtscorefmt);
36 fmtinstall('F', vtfcallfmt);
38 address = "tcp!*!venti";
45 address = EARGF(usage());
51 srv = vtlisten(address);
53 sysfatal("vtlisten %s: %r", argv[1]);
55 while((r = vtgetreq(srv)) != nil){
56 r->rx.msgtype = r->tx.msgtype+1;
58 fprint(2, "<- %F\n", &r->tx);
59 switch(r->tx.msgtype){
65 r->rx.error = vtstrdup("no such block");
66 r->rx.msgtype = VtRerror;
69 packetsha1(r->tx.data, r->rx.score);
75 fprint(2, "-> %F\n", &r->rx);