void arpinit(struct Fs *f) { f->arp = kzmalloc(sizeof(struct arp), MEM_WAIT); qlock_init(&f->arp->qlock); rendez_init(&f->arp->rxmtq); f->arp->f = f; f->arp->rxmt = NULL; f->arp->dropf = f->arp->dropl = NULL; ktask("rxmitproc", rxmitproc, f->arp); }
/* * called to bind an IP ifc to an ethernet device * called with ifc wlock'd */ static void pppbind(Ipifc * ifc, int argc, char **argv) { PPP *ppp; Ipaddr ipaddr, remip; int mtu, framing; char *chapname, *secret; if (argc < 3) error(Ebadarg); ipmove(ipaddr, IPnoaddr); ipmove(remip, IPnoaddr); mtu = Defmtu; framing = 1; chapname = nil; secret = nil; switch (argc) { default: case 9: if (argv[8][0] != '-') secret = argv[8]; case 8: if (argv[7][0] != '-') chapname = argv[7]; case 7: if (argv[6][0] != '-') framing = strtoul(argv[6], 0, 0); case 6: if (argv[5][0] != '-') mtu = strtoul(argv[5], 0, 0); case 5: if (argv[4][0] != '-') parseip(remip, argv[4]); case 4: if (argv[3][0] != '-') parseip(ipaddr, argv[3]); case 3: break; } ppp = smalloc(sizeof(*ppp)); ppp->ifc = ifc; ppp->f = ifc->conv->p->f; ifc->arg = ppp; if (waserror()) { pppunbind(ifc); nexterror(); } if (pppopen(ppp, argv[2], ipaddr, remip, mtu, framing, chapname, secret) == nil) error("ppp open failed"); poperror(); ktask("pppreader", pppreader, ifc); }
static void loopbackbind(struct Ipifc *ifc, int unused_int, char **unused_char_pp_t) { LB *lb; lb = kzmalloc(sizeof(*lb), 0); lb->f = ifc->conv->p->f; /* TO DO: make queue size a function of kernel memory */ lb->q = qopen(128 * 1024, Qmsg, NULL, NULL); ifc->arg = lb; ifc->mbps = 1000; ktask("loopbackread", loopbackread, ifc); }
static void debuginit(void) { ktask("consdbg", dbgproc, NULL); debugkey('|', "HOT|COLD keys", dbgtoggle, 0); debugkey('?', "help", dbghelp, 0); }