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

📄 netif.h

📁 在x86平台上运行不可信任代码的sandbox。
💻 H
字号:
typedef struct Etherpkt	Etherpkt;typedef struct Netaddr	Netaddr;typedef struct Netfile	Netfile;typedef struct Netif	Netif;enum{	Nmaxaddr=	64,	Nmhash=		31,	Ncloneqid=	1,	Naddrqid,	N2ndqid,	N3rdqid,	Ndataqid,	Nctlqid,	Nstatqid,	Ntypeqid,	Nifstatqid,};/* *  Macros to manage Qid's used for multiplexed devices */#define NETTYPE(x)	(((ulong)x)&0x1f)#define NETID(x)	((((ulong)x))>>5)#define NETQID(i,t)	((((ulong)i)<<5)|(t))/* *  one per multiplexed connection */struct Netfile{	QLock lk;	int	inuse;	ulong	mode;	char	owner[KNAMELEN];	int	type;			/* multiplexor type */	int	prom;			/* promiscuous mode */	int	scan;			/* base station scanning interval */	int	bridge;			/* bridge mode */	int	headersonly;		/* headers only - no data */	uchar	maddr[8];		/* bitmask of multicast addresses requested */	int	nmaddr;			/* number of multicast addresses */	Queue	*in;			/* input buffer */};/* *  a network address */struct Netaddr{	Netaddr	*next;		/* allocation chain */	Netaddr	*hnext;	uchar	addr[Nmaxaddr];	int	ref;};/* *  a network interface */struct Netif{	QLock lk;	/* multiplexing */	char	name[KNAMELEN];		/* for top level directory */	int	nfile;			/* max number of Netfiles */	Netfile	**f;	/* about net */	int	limit;			/* flow control */	int	alen;			/* address length */	int	mbps;			/* megabits per sec */	int	link;			/* link status */	uchar	addr[Nmaxaddr];	uchar	bcast[Nmaxaddr];	Netaddr	*maddr;			/* known multicast addresses */	int	nmaddr;			/* number of known multicast addresses */	Netaddr *mhash[Nmhash];		/* hash table of multicast addresses */	int	prom;			/* number of promiscuous opens */	int	scan;			/* number of base station scanners */	int	all;			/* number of -1 multiplexors */	/* statistics */	int	misses;	int	inpackets;	int	outpackets;	int	crcs;		/* input crc errors */	int	oerrs;		/* output errors */	int	frames;		/* framing errors */	int	overflows;	/* packet overflows */	int	buffs;		/* buffering errors */	int	soverflows;	/* software overflow */	/* routines for touching the hardware */	void	*arg;	void	(*promiscuous)(void*, int);	void	(*multicast)(void*, uchar*, int);	void	(*scanbs)(void*, uint);	/* scan for base stations */};void	netifinit(Netif*, char*, int, ulong);Walkqid*	netifwalk(Netif*, Chan*, Chan*, char **, int);Chan*	netifopen(Netif*, Chan*, int);void	netifclose(Netif*, Chan*);long	netifread(Netif*, Chan*, void*, long, ulong);Block*	netifbread(Netif*, Chan*, long, ulong);long	netifwrite(Netif*, Chan*, void*, long);int	netifwstat(Netif*, Chan*, uchar*, int);int	netifstat(Netif*, Chan*, uchar*, int);int	activemulti(Netif*, uchar*, int);/* *  Ethernet specific */enum{	Eaddrlen=	6,	ETHERMINTU =	60,		/* minimum transmit size */	ETHERMAXTU =	1514,		/* maximum transmit size */	ETHERHDRSIZE =	14,		/* size of an ethernet header */	/* ethernet packet types */	ETARP		= 0x0806,	ETIP4		= 0x0800,	ETIP6		= 0x86DD,};struct Etherpkt{	uchar	d[Eaddrlen];	uchar	s[Eaddrlen];	uchar	type[2];	uchar	data[1500];};

⌨️ 快捷键说明

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