1*368c31abSDavid du Colombier #include <u.h>
2*368c31abSDavid du Colombier #include <libc.h>
3*368c31abSDavid du Colombier #include <venti.h>
4*368c31abSDavid du Colombier
5*368c31abSDavid du Colombier int
vtfcallfmt(Fmt * f)6*368c31abSDavid du Colombier vtfcallfmt(Fmt *f)
7*368c31abSDavid du Colombier {
8*368c31abSDavid du Colombier VtFcall *t;
9*368c31abSDavid du Colombier
10*368c31abSDavid du Colombier t = va_arg(f->args, VtFcall*);
11*368c31abSDavid du Colombier if(t == nil){
12*368c31abSDavid du Colombier fmtprint(f, "<nil fcall>");
13*368c31abSDavid du Colombier return 0;
14*368c31abSDavid du Colombier }
15*368c31abSDavid du Colombier switch(t->msgtype){
16*368c31abSDavid du Colombier default:
17*368c31abSDavid du Colombier return fmtprint(f, "%c%d tag %ud", "TR"[t->msgtype&1], t->msgtype>>1, t->tag);
18*368c31abSDavid du Colombier case VtRerror:
19*368c31abSDavid du Colombier return fmtprint(f, "Rerror tag %ud error %s", t->tag, t->error);
20*368c31abSDavid du Colombier case VtTping:
21*368c31abSDavid du Colombier return fmtprint(f, "Tping tag %ud", t->tag);
22*368c31abSDavid du Colombier case VtRping:
23*368c31abSDavid du Colombier return fmtprint(f, "Rping tag %ud", t->tag);
24*368c31abSDavid du Colombier case VtThello:
25*368c31abSDavid du Colombier return fmtprint(f, "Thello tag %ud vers %s uid %s strength %d crypto %d:%.*H codec %d:%.*H", t->tag,
26*368c31abSDavid du Colombier t->version, t->uid, t->strength, t->ncrypto, t->ncrypto, t->crypto,
27*368c31abSDavid du Colombier t->ncodec, t->ncodec, t->codec);
28*368c31abSDavid du Colombier case VtRhello:
29*368c31abSDavid du Colombier return fmtprint(f, "Rhello tag %ud sid %s rcrypto %d rcodec %d", t->tag, t->sid, t->rcrypto, t->rcodec);
30*368c31abSDavid du Colombier case VtTgoodbye:
31*368c31abSDavid du Colombier return fmtprint(f, "Tgoodbye tag %ud", t->tag);
32*368c31abSDavid du Colombier case VtRgoodbye:
33*368c31abSDavid du Colombier return fmtprint(f, "Rgoodbye tag %ud", t->tag);
34*368c31abSDavid du Colombier case VtTauth0:
35*368c31abSDavid du Colombier return fmtprint(f, "Tauth0 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
36*368c31abSDavid du Colombier case VtRauth0:
37*368c31abSDavid du Colombier return fmtprint(f, "Rauth0 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
38*368c31abSDavid du Colombier case VtTauth1:
39*368c31abSDavid du Colombier return fmtprint(f, "Tauth1 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
40*368c31abSDavid du Colombier case VtRauth1:
41*368c31abSDavid du Colombier return fmtprint(f, "Rauth1 tag %ud auth %.*H", t->tag, t->nauth, t->auth);
42*368c31abSDavid du Colombier case VtTread:
43*368c31abSDavid du Colombier return fmtprint(f, "Tread tag %ud score %V blocktype %d count %d", t->tag, t->score, t->blocktype, t->count);
44*368c31abSDavid du Colombier case VtRread:
45*368c31abSDavid du Colombier return fmtprint(f, "Rread tag %ud count %d", t->tag, packetsize(t->data));
46*368c31abSDavid du Colombier case VtTwrite:
47*368c31abSDavid du Colombier return fmtprint(f, "Twrite tag %ud blocktype %d count %d", t->tag, t->blocktype, packetsize(t->data));
48*368c31abSDavid du Colombier case VtRwrite:
49*368c31abSDavid du Colombier return fmtprint(f, "Rwrite tag %ud score %V", t->tag, t->score);
50*368c31abSDavid du Colombier case VtTsync:
51*368c31abSDavid du Colombier return fmtprint(f, "Tsync tag %ud", t->tag);
52*368c31abSDavid du Colombier case VtRsync:
53*368c31abSDavid du Colombier return fmtprint(f, "Rsync tag %ud", t->tag);
54*368c31abSDavid du Colombier }
55*368c31abSDavid du Colombier }
56