⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ethersink.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* * An ethernet /dev/null. * Useful as a bridging target with ethernet-based VPN. */#include "u.h"#include "../port/lib.h"#include "mem.h"#include "dat.h"#include "fns.h"#include "io.h"#include "../port/error.h"#include "../port/netif.h"#include "etherif.h"static longctl(Ether *ether, void *buf, long n){	uchar ea[Eaddrlen];	Cmdbuf *cb;	cb = parsecmd(buf, n);	if(cb->nf >= 2	&& strcmp(cb->f[0], "ea")==0	&& parseether(ea, cb->f[1]) == 0){		free(cb);		memmove(ether->ea, ea, Eaddrlen);		memmove(ether->addr, ether->ea, Eaddrlen);		return 0;	}	free(cb);	error(Ebadctl);	return -1;	/* not reached */}static voidnop(Ether*){}static intreset(Ether* ether){	uchar ea[Eaddrlen];	if(ether->type==nil)		return -1;	memset(ea, 0, sizeof ea);	ether->mbps = 1000;	ether->attach = nop;	ether->transmit = nop;	ether->irq = -1;	ether->interrupt = nil;	ether->ifstat = nil;	ether->ctl = ctl;	ether->promiscuous = nil;	ether->multicast = nil;	ether->arg = ether;	return 0;}voidethersinklink(void){	addethercard("sink", reset);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -