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

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

?? if_il.c

?? open bsd vax module -if function
?? C
?? 第 1 頁 / 共 2 頁
字號:
		    is->is_if.if_flags |= IFF_ALLMULTI;		    goto too_many_multis;		}	}#endif MULTI	/*	 * Set board online.	 * Hang receive buffer and start any pending	 * writes by faking a transmit complete.	 * Receive bcr is not a multiple of 8 so buffer	 * chaining can't happen.	 */	addr->il_csr = ILC_ONLINE;	while ((addr->il_csr & IL_CDONE) == 0)		;	addr->il_bar = is->is_ifuba.ifu_r.ifrw_info & 0xffff;	addr->il_bcr = sizeof(struct il_rheader) + ETHERMTU + 6;	addr->il_csr =	    ((is->is_ifuba.ifu_r.ifrw_info >> 2) & IL_EUA)|ILC_RCV|IL_RIE;	while ((addr->il_csr & IL_CDONE) == 0)		;	is->is_if.if_flags |= IFF_RUNNING | IFF_OACTIVE;	is->is_flags |= ILF_RUNNING;	is->is_lastcmd = 0;	ilcint(unit);	splx(s);}/* * Start output on interface. * Get another datagram to send off of the interface queue, * and map it to the interface before starting the output. */ilstart(ifp)	register struct ifnet *ifp;{        int unit = ifp->if_unit, len;	struct uba_device *ui = ilinfo[unit];	register struct il_softc *is = &il_softc[unit];	register struct ildevice *addr;	struct mbuf *m;	short csr;	IF_DEQUEUE(&is->is_if.if_snd, m);	addr = (struct ildevice *)ui->ui_addr;	if (m == 0) {		if ((is->is_flags & ILF_STATPENDING) == 0)			return (0);		addr->il_bar = is->is_ubaddr & 0xffff;		addr->il_bcr = sizeof (struct il_stats);		csr = ((is->is_ubaddr >> 2) & IL_EUA)|ILC_STAT|IL_RIE|IL_CIE;		is->is_flags &= ~ILF_STATPENDING;		goto startcmd;	}	len = if_wubaput(&is->is_ifuba, m);	/*	 * Ensure minimum packet length.	 * This makes the safe assumtion that there are no virtual holes	 * after the data.	 * For security, it might be wise to zero out the added bytes,	 * but we're mainly interested in speed at the moment.	 */	if (len - sizeof(struct ether_header) < ETHERMIN)		len = ETHERMIN + sizeof(struct ether_header);	if (is->is_ifuba.ifu_flags & UBA_NEEDBDP)		UBAPURGE(is->is_ifuba.ifu_uba, is->is_ifuba.ifu_w.ifrw_bdp);	addr->il_bar = is->is_ifuba.ifu_w.ifrw_info & 0xffff;	addr->il_bcr = len;	csr =	  ((is->is_ifuba.ifu_w.ifrw_info >> 2) & IL_EUA)|ILC_XMIT|IL_CIE|IL_RIE;startcmd:	is->is_lastcmd = csr & IL_CMD;	addr->il_csr = csr;	is->is_if.if_flags |= IFF_OACTIVE;	return (0);}/* * Command done interrupt. */ilcint(unit)	int unit;{	register struct il_softc *is = &il_softc[unit];	struct uba_device *ui = ilinfo[unit];	register struct ildevice *addr = (struct ildevice *)ui->ui_addr;	short csr;	if ((is->is_if.if_flags & IFF_OACTIVE) == 0) {		printf("il%d: stray xmit interrupt, csr=%b\n", unit,			addr->il_csr, IL_BITS);		return;	}	csr = addr->il_csr;	/*	 * Hang receive buffer if it couldn't	 * be done earlier (in ilrint).	 */	if (is->is_flags & ILF_RCVPENDING) {		int s;		addr->il_bar = is->is_ifuba.ifu_r.ifrw_info & 0xffff;		addr->il_bcr = sizeof(struct il_rheader) + ETHERMTU + 6;		addr->il_csr =		  ((is->is_ifuba.ifu_r.ifrw_info >> 2) & IL_EUA)|ILC_RCV|IL_RIE;		s = splhigh();		while ((addr->il_csr & IL_CDONE) == 0)			;		splx(s);		is->is_flags &= ~ILF_RCVPENDING;	}	is->is_if.if_flags &= ~IFF_OACTIVE;	csr &= IL_STATUS;	switch (is->is_lastcmd) {	case ILC_XMIT:		is->is_if.if_opackets++;		if (csr > ILERR_RETRIES)			is->is_if.if_oerrors++;		break;	case ILC_STAT:		if (csr == ILERR_SUCCESS)			iltotal(is);		break;	}	if (is->is_ifuba.ifu_xtofree) {		m_freem(is->is_ifuba.ifu_xtofree);		is->is_ifuba.ifu_xtofree = 0;	}	(void) ilstart(&is->is_if);}/* * Ethernet interface receiver interrupt. * If input error just drop packet. * Otherwise purge input buffered data path and examine  * packet to determine type.  If can't determine length * from type, then have to drop packet.  Othewise decapsulate * packet based on type and pass to type specific higher-level * input routine. */ilrint(unit)	int unit;{	register struct il_softc *is = &il_softc[unit];	struct ildevice *addr = (struct ildevice *)ilinfo[unit]->ui_addr;	register struct il_rheader *il;    	struct mbuf *m;	int len, off, resid, s;	register struct ifqueue *inq;	is->is_if.if_ipackets++;	if (is->is_ifuba.ifu_flags & UBA_NEEDBDP)		UBAPURGE(is->is_ifuba.ifu_uba, is->is_ifuba.ifu_r.ifrw_bdp);	il = (struct il_rheader *)(is->is_ifuba.ifu_r.ifrw_addr);	len = il->ilr_length - sizeof(struct il_rheader);	if ((il->ilr_status&(ILFSTAT_A|ILFSTAT_C)) || len < 46 ||	    len > ETHERMTU) {		is->is_if.if_ierrors++;#ifdef notdef		if (is->is_if.if_ierrors % 100 == 0)			printf("il%d: += 100 input errors\n", unit);#endif		goto setup;	}	/*	 * Deal with trailer protocol: if type is trailer type	 * get true type from first 16-bit word past data.	 * Remember that type was trailer by setting off.	 */	il->ilr_type = ntohs((u_short)il->ilr_type);#define	ildataaddr(il, off, type)	((type)(((caddr_t)((il)+1)+(off))))	if (il->ilr_type >= ETHERTYPE_TRAIL &&	    il->ilr_type < ETHERTYPE_TRAIL+ETHERTYPE_NTRAILER) {		off = (il->ilr_type - ETHERTYPE_TRAIL) * 512;		if (off >= ETHERMTU)			goto setup;		/* sanity */		il->ilr_type = ntohs(*ildataaddr(il, off, u_short *));		resid = ntohs(*(ildataaddr(il, off+2, u_short *)));		if (off + resid > len)			goto setup;		/* sanity */		len = off + resid;	} else		off = 0;	if (len == 0)		goto setup;	/*	 * Pull packet off interface.  Off is nonzero if packet	 * has trailing header; ilget will then force this header	 * information to be at the front, but we still have to drop	 * the type and length which are at the front of any trailer data.	 */	m = if_rubaget(&is->is_ifuba, len, off, &is->is_if);	if (m)		ether_input(&is->is_if, (struct ether_header *)il->ilr_dhost, m);setup:	/*	 * Reset for next packet if possible.	 * If waiting for transmit command completion, set flag	 * and wait until command completes.	 */	if (is->is_if.if_flags & IFF_OACTIVE) {		is->is_flags |= ILF_RCVPENDING;		return;	}	addr->il_bar = is->is_ifuba.ifu_r.ifrw_info & 0xffff;	addr->il_bcr = sizeof(struct il_rheader) + ETHERMTU + 6;	addr->il_csr =		((is->is_ifuba.ifu_r.ifrw_info >> 2) & IL_EUA)|ILC_RCV|IL_RIE;	s = splhigh();	while ((addr->il_csr & IL_CDONE) == 0)		;	splx(s);}/* * Watchdog routine, request statistics from board. */ilwatch(unit)	int unit;{	register struct il_softc *is = &il_softc[unit];	register struct ifnet *ifp = &is->is_if;	int s;	if (is->is_flags & ILF_STATPENDING) {		ifp->if_timer = is->is_scaninterval;		return;	}	s = splimp();	is->is_flags |= ILF_STATPENDING;	if ((is->is_if.if_flags & IFF_OACTIVE) == 0)		(void) ilstart(ifp);	splx(s);	ifp->if_timer = is->is_scaninterval;}/* * Total up the on-board statistics. */iltotal(is)	register struct il_softc *is;{	register u_short *interval, *sum, *end;	interval = &is->is_stats.ils_frames;	sum = &is->is_sum.ils_frames;	end = is->is_sum.ils_fill2;	while (sum < end)		*sum++ += *interval++;	is->is_if.if_collisions = is->is_sum.ils_collis;	if ((is->is_flags & ILF_SETADDR) &&	    (bcmp((caddr_t)is->is_stats.ils_addr, (caddr_t)is->is_addr,					sizeof (is->is_addr)) != 0)) {		log(LOG_ERR, "il%d: physaddr reverted\n", is->is_if.if_unit);		is->is_flags &= ~ILF_RUNNING;		ilinit(is->is_if.if_unit);	}}/* * Process an ioctl request. */ilioctl(ifp, cmd, data)	register struct ifnet *ifp;	int cmd;	caddr_t data;{	register struct ifaddr *ifa = (struct ifaddr *)data;	register struct il_softc *is = &il_softc[ifp->if_unit];	int s = splimp(), error = 0;	switch (cmd) {	case SIOCSIFADDR:		ifp->if_flags |= IFF_UP;		ilinit(ifp->if_unit);		switch (ifa->ifa_addr->sa_family) {#ifdef INET		case AF_INET:			((struct arpcom *)ifp)->ac_ipaddr =				IA_SIN(ifa)->sin_addr;			arpwhohas((struct arpcom *)ifp, &IA_SIN(ifa)->sin_addr);			break;#endif#ifdef NS		case AF_NS:		    {			register struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr);						if (ns_nullhost(*ina)) {				ina->x_host = * (union ns_host *) 				     (il_softc[ifp->if_unit].is_addr);			} else {				il_setaddr(ina->x_host.c_host, ifp->if_unit);				return (0);			}			break;		    }#endif		}		break;	case SIOCSIFFLAGS:		if ((ifp->if_flags & IFF_UP) == 0 &&		    is->is_flags & ILF_RUNNING) {			((struct ildevice *)			   (ilinfo[ifp->if_unit]->ui_addr))->il_csr = ILC_RESET;			is->is_flags &= ~ILF_RUNNING;		} else if (ifp->if_flags & IFF_UP &&		    (is->is_flags & ILF_RUNNING) == 0)			ilinit(ifp->if_unit);		break;	default:		error = EINVAL;	}	splx(s);	return (error);}/* * set ethernet address for unit */il_setaddr(physaddr, unit)u_char *physaddr;int unit;{	register struct il_softc *is = &il_softc[unit];		if (! (is->is_flags & ILF_RUNNING))		return;			bcopy((caddr_t)physaddr, (caddr_t)is->is_addr, sizeof is->is_addr);	is->is_flags &= ~ILF_RUNNING;	is->is_flags |= ILF_SETADDR;	ilinit(unit);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产视频在线| 福利一区二区在线观看| 久久99日本精品| 不卡的av电影在线观看| 欧美一级日韩一级| 亚洲综合视频在线| 成人一区二区三区中文字幕| 666欧美在线视频| 亚洲国产成人av好男人在线观看| 国产麻豆欧美日韩一区| 欧美精品自拍偷拍动漫精品| 中文字幕一区二区日韩精品绯色| 免费av网站大全久久| 在线观看欧美日本| 国产精品久久看| 国产一区二区免费在线| 日韩一卡二卡三卡四卡| 亚洲国产精品欧美一二99| 成人永久aaa| 国产清纯在线一区二区www| 久久se这里有精品| 日韩视频一区二区三区 | 一区二区三区四区激情| 国产激情偷乱视频一区二区三区| 欧美一区二区久久| 波多野结衣91| 国产亚洲综合在线| 国产高清亚洲一区| 国产日韩精品一区二区三区在线| 国产精品一区在线观看你懂的| 56国语精品自产拍在线观看| 亚洲成人免费在线观看| 欧美日韩视频一区二区| 婷婷亚洲久悠悠色悠在线播放 | 综合色中文字幕| 成人一区在线看| 国产精品黄色在线观看| 色婷婷综合中文久久一本| 亚洲码国产岛国毛片在线| 色综合视频在线观看| 一区二区三区鲁丝不卡| 欧美美女bb生活片| 久久成人羞羞网站| 国产欧美日韩另类一区| 99精品欧美一区二区三区综合在线| 亚洲天天做日日做天天谢日日欢| 91亚洲国产成人精品一区二区三| 一个色妞综合视频在线观看| 欧美日韩国产系列| 久久99精品国产麻豆婷婷| 久久亚区不卡日本| 97久久精品人人做人人爽| 一区二区三区中文免费| 日韩精品一区二区三区在线| 国产高清不卡二三区| 综合婷婷亚洲小说| 日韩欧美国产综合| 国产999精品久久久久久| 亚洲激情六月丁香| 日韩欧美一区二区视频| 成人网页在线观看| 天天影视涩香欲综合网| 久久日一线二线三线suv| 不卡一卡二卡三乱码免费网站| 亚洲一本大道在线| 久久久国产精华| 日本精品一区二区三区高清 | 欧美一级淫片007| 国产不卡免费视频| 偷拍日韩校园综合在线| 久久蜜桃一区二区| 在线看国产一区| 国产一区二区三区久久久| 亚洲精品欧美激情| 国产亚洲精品久| 欧美日韩国产高清一区| 成人av午夜影院| 免费人成网站在线观看欧美高清| 中文字幕日本不卡| 精品国产一区二区亚洲人成毛片| 91论坛在线播放| 国产一区二区0| 香蕉加勒比综合久久| 17c精品麻豆一区二区免费| 日韩丝袜情趣美女图片| 在线欧美日韩国产| 成人性生交大片| 美女精品自拍一二三四| 亚洲另类一区二区| 久久久久亚洲综合| 日韩免费福利电影在线观看| 一本一道综合狠狠老| 国产激情精品久久久第一区二区 | 国产精品你懂的在线| 日韩视频123| 精品视频一区二区不卡| 日本久久电影网| 在线视频欧美精品| 波多野洁衣一区| 成人激情校园春色| 国产91精品免费| 国产一区二区三区久久悠悠色av | 一个色妞综合视频在线观看| 中文字幕第一区二区| ww久久中文字幕| 久久综合网色—综合色88| 欧美日本一区二区三区| 欧美三区免费完整视频在线观看| 色综合久久中文综合久久牛| 9i在线看片成人免费| 99久久99精品久久久久久| av亚洲精华国产精华| 91麻豆精品视频| 91免费在线视频观看| 色94色欧美sute亚洲13| 色哟哟精品一区| 欧美性淫爽ww久久久久无| 日本乱人伦一区| 欧美日韩aaaaa| 538在线一区二区精品国产| 欧美性一二三区| 日韩一区和二区| 久久综合色播五月| 亚洲国产精华液网站w | 国产aⅴ综合色| 成人app在线观看| 日本韩国欧美一区二区三区| 欧美日韩三级视频| 欧美一级片在线| 精品欧美久久久| 国产精品三级在线观看| 综合自拍亚洲综合图不卡区| 亚洲综合区在线| 日本视频免费一区| 国产毛片一区二区| 91亚洲精品久久久蜜桃网站| 欧美三级在线视频| 日韩视频免费直播| 国产精品二三区| 亚洲国产精品视频| 国产资源精品在线观看| 成人午夜精品一区二区三区| 波多野结衣精品在线| 欧美精品123区| 欧美国产日韩在线观看| 亚洲综合在线视频| 国产伦理精品不卡| 欧洲精品一区二区| 精品国产一二三区| 亚洲色图丝袜美腿| 老汉av免费一区二区三区| 成人18精品视频| 91精品婷婷国产综合久久| 国产精品丝袜一区| 午夜视频在线观看一区二区 | 奇米777欧美一区二区| 成人h动漫精品一区二区| 欧美日韩视频在线观看一区二区三区| 欧美sm极限捆绑bd| 一二三区精品福利视频| 国产成人在线视频网站| 欧美二区在线观看| 最近中文字幕一区二区三区| 久久99久久精品欧美| 91丝袜美腿高跟国产极品老师| 欧美一级欧美三级| 亚洲在线视频网站| 成人免费视频一区二区| 欧美一卡2卡三卡4卡5免费| 日韩理论片网站| 国产精品一区二区三区四区| 欧美日韩国产一二三| 亚洲女爱视频在线| 国产成人h网站| 亚洲美女精品一区| 成人午夜视频网站| 精品99999| 日本伊人色综合网| 欧美日本不卡视频| 亚洲影院在线观看| 日本韩国一区二区三区视频| 国产精品久久国产精麻豆99网站| 日韩福利电影在线| 欧美精品18+| 亚洲第一成人在线| 91成人免费网站| 欧美激情综合五月色丁香| 国产一区二区主播在线| 日韩午夜激情免费电影| 婷婷综合在线观看| 欧美日韩国产免费一区二区 | 欧美国产在线观看| 国产高清不卡二三区| 精品成人私密视频| 久久电影国产免费久久电影| 日韩欧美成人午夜| 久久精品国产亚洲高清剧情介绍| 欧美一区二区三区日韩| 麻豆精品一二三| 欧美精品一区二区精品网|