亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? if_il.c

?? open bsd vax module -if function
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (c) 1982, 1986 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)if_il.c	7.8 (Berkeley) 12/16/90 */#include "il.h"#if NIL > 0/* * Interlan Ethernet Communications Controller interface */#include "../include/pte.h"#include "sys/param.h"#include "sys/systm.h"#include "sys/mbuf.h"#include "sys/buf.h"#include "sys/protosw.h"#include "sys/socket.h"#include "sys/vmmac.h"#include "sys/ioctl.h"#include "sys/errno.h"#include "sys/syslog.h"#include "net/if.h"#include "net/netisr.h"#include "net/route.h"#ifdef INET#include "netinet/in.h"#include "netinet/in_systm.h"#include "netinet/in_var.h"#include "netinet/ip.h"#include "netinet/if_ether.h"#endif#ifdef NS#include "netns/ns.h"#include "netns/ns_if.h"#endif#include "../include/cpu.h"#include "../include/mtpr.h"#include "if_il.h"#include "if_ilreg.h"#include "if_uba.h"#include "../uba/ubareg.h"#include "../uba/ubavar.h"int	ilprobe(), ilattach(), ilrint(), ilcint();struct	uba_device *ilinfo[NIL];u_short ilstd[] = { 0 };struct	uba_driver ildriver =	{ ilprobe, 0, ilattach, 0, ilstd, "il", ilinfo };#define	ILUNIT(x)	minor(x)int	ilinit(),iloutput(),ilioctl(),ilreset(),ilwatch(),ilstart();int	ildebug = 0;/* * Ethernet software status per interface. * * Each interface is referenced by a network interface structure, * is_if, which the routing code uses to locate the interface. * This structure contains the output queue for the interface, its address, ... * We also have, for each interface, a UBA interface structure, which * contains information about the UNIBUS resources held by the interface: * map registers, buffered data paths, etc.  Information is cached in this * structure for use by the if_uba.c routines in running the interface * efficiently. */struct ether_addr {	u_char	addr[6];};struct	il_softc {	struct	arpcom is_ac;		/* Ethernet common part */#define	is_if	is_ac.ac_if		/* network-visible interface */#define	is_addr	is_ac.ac_enaddr		/* hardware Ethernet address */	struct	ifuba is_ifuba;		/* UNIBUS resources */	int	is_flags;#define	ILF_RCVPENDING	0x2		/* start rcv in ilcint */#define	ILF_STATPENDING	0x4		/* stat cmd pending */#define	ILF_RUNNING	0x8		/* board is running */#define	ILF_SETADDR	0x10		/* physical address is changed */	short	is_lastcmd;		/* can't read csr, so must save it */	short	is_scaninterval;	/* interval of stat collection */#define	ILWATCHINTERVAL	60		/* once every 60 seconds */	union {	    struct	il_stats isu_stats;	/* holds on-board statistics */	    struct	ether_addr isu_maddrs[63];	/* multicast addrs */	}	is_isu;#define is_stats	is_isu.isu_stats#define is_maddrs	is_isu.isu_maddrs	struct	il_stats is_sum;	/* summation over time */	int	is_ubaddr;		/* mapping registers of is_stats */} il_softc[NIL];ilprobe(reg)	caddr_t reg;{	register int br, cvec;		/* r11, r10 value-result */	register struct ildevice *addr = (struct ildevice *)reg;	register i;#ifdef lint	br = 0; cvec = br; br = cvec;	i = 0; ilrint(i); ilcint(i); ilwatch(i);#endif	addr->il_csr = ILC_OFFLINE|IL_CIE;	DELAY(100000);	i = addr->il_csr;		/* clear CDONE */	if (cvec > 0 && cvec != 0x200)		cvec -= 4;	return (1);}/* * Interface exists: make available by filling in network interface * record.  System will initialize the interface when it is ready * to accept packets.  A STATUS command is done to get the ethernet * address and other interesting data. */ilattach(ui)	struct uba_device *ui;{	register struct il_softc *is = &il_softc[ui->ui_unit];	register struct ifnet *ifp = &is->is_if;	register struct ildevice *addr = (struct ildevice *)ui->ui_addr;	ifp->if_unit = ui->ui_unit;	ifp->if_name = "il";	ifp->if_mtu = ETHERMTU;	ifp->if_flags = IFF_BROADCAST;	/*	 * Reset the board and map the statistics	 * buffer onto the Unibus.	 */	addr->il_csr = ILC_RESET;	(void)ilwait(ui, "reset");		is->is_ubaddr = uballoc(ui->ui_ubanum, (caddr_t)&is->is_stats,	    sizeof (struct il_stats), 0);	addr->il_bar = is->is_ubaddr & 0xffff;	addr->il_bcr = sizeof (struct il_stats);	addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)|ILC_STAT;	(void)ilwait(ui, "status");	ubarelse(ui->ui_ubanum, &is->is_ubaddr);	if (ildebug)		printf("il%d: module=%s firmware=%s\n", ui->ui_unit,			is->is_stats.ils_module, is->is_stats.ils_firmware); 	bcopy((caddr_t)is->is_stats.ils_addr, (caddr_t)is->is_addr, 	    sizeof (is->is_addr));	printf("il%d: hardware address %s\n", ui->ui_unit,		ether_sprintf(is->is_addr));	ifp->if_init = ilinit;	ifp->if_output = ether_output;	ifp->if_ioctl = ilioctl;	ifp->if_reset = ilreset;	ifp->if_start = ilstart;	is->is_ifuba.ifu_flags = UBA_CANTWAIT;	if_attach(ifp);}ilwait(ui, op)	struct uba_device *ui;	char *op;{	register struct ildevice *addr = (struct ildevice *)ui->ui_addr;	while ((addr->il_csr&IL_CDONE) == 0)		;	if (addr->il_csr&IL_STATUS) {		printf("il%d: %s failed, csr=%b\n", ui->ui_unit, op,			addr->il_csr, IL_BITS);		return (-1);	}	return (0);}/* * Reset of interface after UNIBUS reset. * If interface is on specified uba, reset its state. */ilreset(unit, uban)	int unit, uban;{	register struct uba_device *ui;	if (unit >= NIL || (ui = ilinfo[unit]) == 0 || ui->ui_alive == 0 ||	    ui->ui_ubanum != uban)		return;	printf(" il%d", unit);	il_softc[unit].is_if.if_flags &= ~IFF_RUNNING;	il_softc[unit].is_flags &= ~ILF_RUNNING;	ilinit(unit);}/* * Initialization of interface; clear recorded pending * operations, and reinitialize UNIBUS usage. */ilinit(unit)	int unit;{	register struct il_softc *is = &il_softc[unit];	register struct uba_device *ui = ilinfo[unit];	register struct ildevice *addr;	register struct ifnet *ifp = &is->is_if;	int s;	/* not yet, if address still unknown */	if (ifp->if_addrlist == (struct ifaddr *)0)		return;	if (is->is_flags & ILF_RUNNING)		return;	if ((ifp->if_flags & IFF_RUNNING) == 0) {		if (if_ubainit(&is->is_ifuba, ui->ui_ubanum,		    sizeof (struct il_rheader), (int)btoc(ETHERMTU)) == 0) { 			printf("il%d: can't initialize\n", unit);			is->is_if.if_flags &= ~IFF_UP;			return;		}		is->is_ubaddr = uballoc(ui->ui_ubanum, (caddr_t)&is->is_isu,		    sizeof (is->is_isu), 0);	}	ifp->if_watchdog = ilwatch;	is->is_scaninterval = ILWATCHINTERVAL;	ifp->if_timer = is->is_scaninterval;	addr = (struct ildevice *)ui->ui_addr;	/*	 * Turn off source address insertion (it's faster this way),	 * and set board online.  Former doesn't work if board is	 * already online (happens on ubareset), so we put it offline	 * first.	 */	s = splimp();	addr->il_csr = ILC_RESET;	if (ilwait(ui, "hardware diag")) { 		is->is_if.if_flags &= ~IFF_UP; 		splx(s); 		return; 	}	addr->il_csr = ILC_CISA;	while ((addr->il_csr & IL_CDONE) == 0)		;	/*	 * If we must reprogram this board's physical ethernet	 * address (as for secondary XNS interfaces), we do so	 * before putting it on line, and starting receive requests.	 * If you try this on an older 1010 board, it will total	 * wedge the board.	 */	if (is->is_flags & ILF_SETADDR) {		bcopy((caddr_t)is->is_addr, (caddr_t)&is->is_isu,							sizeof is->is_addr);		addr->il_bar = is->is_ubaddr & 0xffff;		addr->il_bcr = sizeof is->is_addr;		addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)|ILC_LDPA;		if (ilwait(ui, "setaddr"))			return;		addr->il_bar = is->is_ubaddr & 0xffff;		addr->il_bcr = sizeof (struct il_stats);		addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)|ILC_STAT;		if (ilwait(ui, "verifying setaddr"))			return;		if (bcmp((caddr_t)is->is_stats.ils_addr, (caddr_t)is->is_addr,						sizeof (is->is_addr)) != 0) {			printf("il%d: setaddr didn't work\n", ui->ui_unit);			return;		}	}#ifdef MULTICAST	if (is->is_if.if_flags & IFF_PROMISC) {		addr->il_csr = ILC_PRMSC;		if (ilwait(ui, "all multi"))			return;	} else if (is->is_if.if_flags & IFF_ALLMULTI) {	too_many_multis:		addr->il_csr = ILC_ALLMC;		if (ilwait(ui, "all multi"))			return;	else {		int i;		register struct ether_addr *ep = is->is_maddrs;		struct ether_multi *enm;		struct ether_multistep step;		/*		 * Step through our list of multicast addresses.  If we have		 * too many multicast addresses, or if we have to listen to		 * a range of multicast addresses, turn on reception of all		 * multicasts.		 */		i = 0;		ETHER_FIRST_MULTI(step, &is->is_ac, enm);		while (enm != NULL) {			if (++i > 63 && k != 0) {				break;			}			*ep++ = *(struct ether_addr *)enm->enm_addrlo;			ETHER_NEXT_MULTI(step, enm);		}		if (i = 0) {			/* no multicasts! */		} else if (i <= 63) {			addr->il_bar = is->is_ubaddr & 0xffff;			addr->il_bcr = i * sizeof (struct ether_addr);			addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)|						LC_LDGRPS;			if (ilwait(ui, "load multi"))				return;		} else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av电影在线观看| 免费人成在线不卡| jizzjizzjizz欧美| 亚洲天天做日日做天天谢日日欢| 成人av午夜电影| 一区二区三区蜜桃| 欧美日韩小视频| 国产在线视视频有精品| 国产精品嫩草99a| 欧美性色黄大片| 蜜桃av噜噜一区| 欧美国产日本韩| 欧美图区在线视频| 蜜桃av一区二区在线观看| 欧美国产日韩亚洲一区| 在线亚洲免费视频| 精品无码三级在线观看视频| 国产精品免费aⅴ片在线观看| 欧美三级视频在线观看| 国精产品一区一区三区mba视频| 亚洲国产精品激情在线观看| 色悠悠久久综合| 久久精品国产一区二区三| 中文字幕永久在线不卡| 日韩亚洲欧美一区| gogo大胆日本视频一区| 日本va欧美va瓶| 《视频一区视频二区| 91精品国产综合久久精品图片 | 一区二区三区在线观看动漫 | 91麻豆福利精品推荐| 日欧美一区二区| 国产精品理论片| 67194成人在线观看| 成人午夜激情片| 美女视频黄频大全不卡视频在线播放| 国产精品免费免费| 欧美va日韩va| 欧美另类变人与禽xxxxx| 国产成人av电影免费在线观看| 亚洲成人三级小说| 亚洲欧洲美洲综合色网| 精品国产免费人成在线观看| 欧美亚洲一区二区在线观看| 99久久99精品久久久久久| 国产中文字幕精品| 午夜精品免费在线观看| 中文字幕在线观看不卡| 欧美精品一区二区在线观看| 欧美日韩精品欧美日韩精品一| av激情亚洲男人天堂| 国产精品一区二区你懂的| 免费高清在线一区| 亚洲成av人片在线观看| 亚洲日本电影在线| 亚洲国产高清在线| 国产日韩欧美精品一区| 精品精品国产高清一毛片一天堂| 欧美日韩视频在线观看一区二区三区| 成人午夜私人影院| 国产成人夜色高潮福利影视| 狠狠色综合日日| 麻豆视频一区二区| 老司机午夜精品99久久| 日本美女视频一区二区| 亚洲国产精品尤物yw在线观看| 一区二区欧美视频| 一区二区三区日韩精品视频| 亚洲日本在线天堂| 亚洲精品乱码久久久久久久久| 成人欧美一区二区三区1314| 中文字幕不卡一区| 国产精品传媒视频| 亚洲欧美日韩国产中文在线| 亚洲欧美中日韩| 日韩美女视频19| 亚洲综合清纯丝袜自拍| 亚洲黄色性网站| 亚洲第一电影网| 日韩av一区二区三区四区| 免费在线一区观看| 精品一区二区三区久久久| 久久精品国产澳门| 狠狠色丁香久久婷婷综合丁香| 国产一区二区三区| 成人免费高清在线观看| 91色九色蝌蚪| 欧美最新大片在线看| 在线不卡一区二区| 日韩精品一区二区在线观看| 久久噜噜亚洲综合| 自拍偷拍亚洲激情| 午夜国产精品一区| 久久99久久99精品免视看婷婷 | 91麻豆精品国产自产在线| 日韩一区二区麻豆国产| 亚洲精品在线免费播放| 欧美国产综合色视频| 亚洲男人电影天堂| 婷婷六月综合亚洲| 久久99国产精品久久| 国产成人丝袜美腿| 91九色02白丝porn| 日韩精品一区在线| 国产精品久久久久久久第一福利| 一二三区精品福利视频| 免费欧美在线视频| aaa国产一区| 91精品国产综合久久久久久久| 国产午夜三级一区二区三| 亚洲精品你懂的| 久久国产欧美日韩精品| 成人一道本在线| 777久久久精品| 国产精品伦理一区二区| 日韩精品一级中文字幕精品视频免费观看 | 久久精品亚洲麻豆av一区二区| 亚洲欧洲国产日本综合| 日韩高清在线电影| 成人丝袜高跟foot| 91精品欧美福利在线观看| 国产精品嫩草影院av蜜臀| 亚洲成人动漫一区| 成人午夜激情片| 日韩午夜激情av| 一区二区三区四区精品在线视频| 久久精品国产澳门| 欧美日韩中文字幕一区二区| 中文字幕国产精品一区二区| 日本欧美一区二区| 在线看国产一区| 国产亚洲婷婷免费| 青青青爽久久午夜综合久久午夜| 色综合久久88色综合天天| 国产婷婷色一区二区三区在线| 亚洲aaa精品| 91猫先生在线| 亚洲国产高清aⅴ视频| 久久99精品久久久| 在线播放一区二区三区| 亚洲免费资源在线播放| 北条麻妃国产九九精品视频| 久久久国际精品| 精品在线亚洲视频| 8v天堂国产在线一区二区| 亚洲一区免费在线观看| 91美女在线看| 日韩美女精品在线| 99久免费精品视频在线观看| 久久久精品影视| 国产呦精品一区二区三区网站| 欧美疯狂做受xxxx富婆| 亚洲午夜影视影院在线观看| 91麻豆国产福利精品| 中文字幕在线观看一区| 成人h动漫精品| 中文字幕欧美日本乱码一线二线 | 国产精品网站在线观看| 国产精品羞羞答答xxdd| 久久只精品国产| 国产精品原创巨作av| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美激情在线一区二区| 国产福利不卡视频| 亚洲国产精品99久久久久久久久 | 欧美理论片在线| 午夜久久久久久久久| 欧美视频一区二区三区四区 | 亚洲免费在线观看视频| 99re成人精品视频| 樱花影视一区二区| 欧美性猛交xxxx黑人交| 日韩精品每日更新| 日韩一级二级三级精品视频| 久久99久久久久久久久久久| 久久人人爽爽爽人久久久| 国产成人午夜高潮毛片| 国产精品网站一区| 91网上在线视频| 亚洲影院在线观看| 欧美一区二区福利视频| 久色婷婷小香蕉久久| 国产日韩成人精品| 色婷婷精品久久二区二区蜜臂av | 亚洲成人av一区二区三区| 91精品国产福利在线观看| 蜜桃av一区二区| 欧美激情综合五月色丁香小说| 成人国产一区二区三区精品| 一区二区三区在线观看视频| 欧美精品1区2区3区| 激情文学综合网| 亚洲欧美影音先锋| 91精品国产麻豆| a级精品国产片在线观看| 亚洲午夜一区二区| 久久噜噜亚洲综合| 欧美伊人久久久久久久久影院| 理论片日本一区| 亚洲人精品一区|