Exemplo n.º 1
0
Arquivo: arp.c Projeto: GanShun/akaros
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);
}
Exemplo n.º 2
0
/*
 *  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);
}
Exemplo n.º 3
0
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);

}
Exemplo n.º 4
0
static void debuginit(void)
{
	ktask("consdbg", dbgproc, NULL);
	debugkey('|', "HOT|COLD keys", dbgtoggle, 0);
	debugkey('?', "help", dbghelp, 0);
}