2 #include "../port/lib.h"
6 #include "../port/error.h"
23 static void loopbackread(void *a);
26 loopbackbind(Ipifc *ifc, int, char**)
30 lb = smalloc(sizeof(*lb));
31 lb->f = ifc->conv->p->f;
32 lb->q = qopen(1024*1024, Qmsg, nil, nil);
35 kproc("loopbackread", loopbackread, ifc);
40 loopbackunbind(Ipifc *ifc)
45 postnote(lb->readp, 1, "unbind", 0);
47 /* wait for reader to die */
49 tsleep(&up->sleep, return0, 0, 300);
57 loopbackbwrite(Ipifc *ifc, Block *bp, int, uchar*)
62 if(qpass(lb->q, bp) < 0)
76 lb->readp = up; /* hide identity under a rock for unbind */
82 bp = qbread(lb->q, Maxtu);
97 ipiput4(lb->f, ifc, bp);
103 Medium loopbackmedium =
111 .unbind= loopbackunbind,
112 .bwrite= loopbackbwrite,
116 loopbackmediumlink(void)
118 addipmedium(&loopbackmedium);