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

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

?? if_subr.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* if_subr.c - common routines for network interface drivers *//* Copyright 1990 - 2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1982, 1989, 1993 *	The 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_ethersubr.c	8.1 (Berkeley) 6/10/93 *//*modification history--------------------01q,23may02,vvv  removed unnecessary m_copy from ether_output (SPR #77775)01p,22apr02,wap  call ip_mloopback() rather than calling looutput() directly                 (SPR #72246)01o,15apr02,wap  reinstate netJobAdd removal changes01n,29mar02,wap  back out the previous change (needs more investigation)01m,21mar02,rae  remove unecessary netJobAdd() SPR #01l,21mar02,vvv  updated man page for copyFromMbufs (SPR #20787)01k,01nov01,rae  fixed compile warnings, corrected WV event (SPR #71284)01j,12oct01,rae  merge from truestack ver 01o, base 01h (SPR #69112 etc.)01i,17oct00,spm  updated ether_attach to report memory allocation failures01h,21aug98,n_s  updated if_omcast in ether_output () if_noproto in                  do_protocol_with_type (). spr2107401f,19sep97,vin  modified build_cluster to incorporate cluster blks,		 removed pointers to refcounts.01g,11aug97,vin  changed mBlkGet to use _pNetDpool.01e,10jul97,vin  removed unsupported revarpinput() code.01f,05jun97,vin  corrected processing for promiscuous interfaces in		 ether_input.01e,02jun97,spm  updated man page for bcopy_to_mbufs()01d,15may97,vin  reworked ether_input, cleanup, added copyFromMbufs().		 removed support for check_trailer().01c,16dec96,vin  removed unnecessary ntohs(). 01b,13nov96,vin  replaced m_gethdr with mBlkGet() in buildCluster.01a,03mar96,vin  created from BSD4.4 stuff,integrated with 02p of if_subr.c*/#include "vxWorks.h"#include "stdlib.h"#include "stdio.h"#include "tickLib.h"#include "logLib.h"#include "errno.h"#include "netinet/in.h"#include "netinet/in_systm.h"#include "netinet/in_var.h"#include "netinet/ip.h"#include "net/if.h"#include "net/if_arp.h"#include "netinet/if_ether.h"#include "net/if_subr.h"#include "netinet/in_var.h"#include "netinet/ip_var.h"    /* for ipintr() prototype */#include "net/mbuf.h"#include "net/route.h"#include "net/if_llc.h"#include "net/if_dl.h"#include "net/if_types.h"#include "lstLib.h"#include "netLib.h"#include "muxLib.h"#include "memPartLib.h"#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET#include "wvNetLib.h"#endif /* INCLUDE_WVNET */#endif#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#endiftypedef struct net_type    {    NODE     	node;    FUNCPTR     inputRtn;    int     	etherType;    } NET_TYPE;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* Set common fields of event identifiers for this module. */LOCAL UCHAR wvNetModuleId = WV_NET_IFSUBR_MODULE;   /* Value for if_subr.c */LOCAL UCHAR wvNetLocalFilter = WV_NET_NONE;     /* Available event filter */LOCAL ULONG wvNetEventId;       /* Event identifier: see wvNetLib.h */#endif    /* INCLUDE_WVNET */#endif/* externs */#ifndef VIRTUAL_STACKextern	struct ifnet loif;extern  void ip_mloopback(struct ifnet *, struct mbuf *, struct sockaddr_in *,                          struct rtentry *rt);#endif /* VIRTUAL_STACK */u_char	etherbroadcastaddr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };u_char	ether_ipmulticast_min[6] = { 0x01, 0x00, 0x5e, 0x00, 0x00, 0x00 };u_char	ether_ipmulticast_max[6] = { 0x01, 0x00, 0x5e, 0x7f, 0xff, 0xff };#define senderr(e) { error = (e); goto bad;}LOCAL LIST netTypeList;/* * Ethernet output routine. * Encapsulate a packet of type family for the local net. * Use trailer local net encapsulation if enough data in first * packet leaves a multiple of 512 bytes of data in remainder. * Assumes that ifp is actually pointer to arpcom structure. */intether_output(ifp, m0, dst, rt0)	register struct ifnet *ifp;	struct mbuf *m0;	struct sockaddr *dst;	struct rtentry *rt0;{	u_short etype;	int s, error = 0; 	u_char edst[6];	register struct mbuf *m = m0;	register struct rtentry *rt;	register struct ether_header *eh;	int off, len = m->m_pkthdr.len;	struct arpcom *ac = (struct arpcom *)ifp;	if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING))            {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_CRITICAL, 2, 3,                            WV_NETEVENT_ETHEROUT_IFDOWN, WV_NET_SEND, ifp)#endif  /* INCLUDE_WVNET */#endif            senderr(ENETDOWN);            }	ifp->if_lastchange = tickGet();	if ((rt = rt0)) {		if ((rt->rt_flags & RTF_UP) == 0) {			if ((rt0 = rt = rtalloc1(dst, 1)))				rt->rt_refcnt--;			else {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_DSTADDROUT_EVENT_1 (NET_CORE_EVENT, WV_NET_CRITICAL, 4, 5,                            ((struct sockaddr_in *)dst)->sin_addr.s_addr,                            WV_NETEVENT_ETHEROUT_NOROUTE, WV_NET_SEND,                            ((struct sockaddr_in *)dst)->sin_addr.s_addr)#endif  /* INCLUDE_WVNET */#endif                             senderr(EHOSTUNREACH);                             }		}		if (rt->rt_flags & RTF_GATEWAY) {			if (rt->rt_gwroute == 0)				goto lookup;			if (((rt = rt->rt_gwroute)->rt_flags & RTF_UP) == 0) {				rtfree(rt); rt = rt0;			lookup: rt->rt_gwroute = rtalloc1(rt->rt_gateway, 1);				if ((rt = rt->rt_gwroute) == 0) {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_DSTADDROUT_EVENT_1 (NET_CORE_EVENT, WV_NET_CRITICAL, 4, 5,                       ((struct sockaddr_in *)rt->rt_gateway)->sin_addr.s_addr,                                    WV_NETEVENT_ETHEROUT_NOROUTE, WV_NET_SEND,                       ((struct sockaddr_in *)rt->rt_gateway)->sin_addr.s_addr)#endif  /* INCLUDE_WVNET */#endif                                    senderr(EHOSTUNREACH);                                }			}		}		if (rt->rt_flags & RTF_REJECT)			if (rt->rt_rmx.rmx_expire == 0 ||			    tickGet() < rt->rt_rmx.rmx_expire) {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */        WV_NET_EVENT_0 (NET_CORE_EVENT, WV_NET_CRITICAL, 5, 6,                        WV_NETEVENT_ETHEROUT_RTREJECT, WV_NET_SEND)#endif  /* INCLUDE_WVNET */#endif                            senderr(rt == rt0 ? EHOSTDOWN : EHOSTUNREACH);                            }	}	switch (dst->sa_family) {#ifdef INET	case AF_INET:		if (!arpresolve(ac, rt, m, dst, edst))			return (0);	/* if not yet resolved */		/* If broadcasting on a simplex interface, loopback a copy */		if ((m->m_flags & M_BCAST) && (ifp->if_flags & IFF_SIMPLEX))			ip_mloopback (ifp, m, (struct sockaddr_in *)dst,				      (struct rtentry*)rt);		off = m->m_pkthdr.len - m->m_len;		etype = ETHERTYPE_IP;		break;#endif	case AF_UNSPEC:		eh = (struct ether_header *)dst->sa_data; 		bcopy((caddr_t)eh->ether_dhost, (caddr_t)edst, sizeof (edst));		etype = eh->ether_type;		break;	default:		printf("%s%d: can't handle af%d\n", ifp->if_name, ifp->if_unit,			dst->sa_family);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */                WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_ERROR, 3, 7,                                WV_NETEVENT_ETHEROUT_AFNOTSUPP, WV_NET_SEND,                                dst->sa_family)#endif  /* INCLUDE_WVNET */#endif		senderr(EAFNOSUPPORT);	}	/*	 * Add local net header.  If no space in first mbuf,	 * allocate another.	 */	M_PREPEND(m, sizeof (struct ether_header), M_DONTWAIT);	if (m == 0)            {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_CRITICAL, 3, 4,                            WV_NETEVENT_ETHEROUT_NOBUFS, WV_NET_SEND, ifp)#endif  /* INCLUDE_WVNET */#endif            senderr(ENOBUFS);            }	eh = mtod(m, struct ether_header *);	etype = htons(etype);	bcopy((caddr_t)&etype,(caddr_t)&eh->ether_type,		sizeof(eh->ether_type)); 	bcopy((caddr_t)edst, (caddr_t)eh->ether_dhost, sizeof (edst)); 	bcopy((caddr_t)ac->ac_enaddr, (caddr_t)eh->ether_shost,	    sizeof(eh->ether_shost));	s = splimp();	/*	 * Queue message on interface, and start output if interface	 * not yet active.	 */	if (IF_QFULL(&ifp->if_snd)) {		IF_DROP(&ifp->if_snd);		splx(s);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_CRITICAL, 3, 4,                            WV_NETEVENT_ETHEROUT_NOBUFS, WV_NET_SEND, ifp)#endif  /* INCLUDE_WVNET */#endif		senderr(ENOBUFS);	}	IF_ENQUEUE(&ifp->if_snd, m);	if ((ifp->if_flags & IFF_OACTIVE) == 0)		(*ifp->if_start)(ifp);	splx(s);	ifp->if_obytes += len + sizeof (struct ether_header);	if (m->m_flags & M_MCAST || m->m_flags & M_BCAST)		ifp->if_omcasts++;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_NOTICE event */        WV_NET_EVENT_2 (NET_CORE_EVENT, WV_NET_NOTICE, 3, 12,                        WV_NETEVENT_ETHEROUT_FINISH, WV_NET_SEND, ifp, error)#endif  /* INCLUDE_WVNET */#endif	return (error);bad:	if (m)		m_freem(m);	return (error);}/********************************************************************************* do_protocol - check the link-level type field and process IP and ARP data** This routine must not be called at interrupt level.* Process a received Ethernet packet;* the packet is in the mbuf chain m without* the ether header, which is provided separately.** NOMANUAL*/voidether_input(ifp, eh, m)	struct ifnet *ifp;	register struct ether_header *eh;	struct mbuf *m;{	u_short 		etype;	struct arpcom *		ac = (struct arpcom *)ifp;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_NOTICE event */        WV_NET_EVENT_1 (NET_CORE_EVENT, WV_NET_NOTICE, 4, 13,                        WV_NETEVENT_ETHERIN_START, WV_NET_RECV, ifp)#endif  /* INCLUDE_WVNET */#endif	if ((ifp->if_flags & IFF_UP) == 0) {		m_freem(m);		return;	}	ifp->if_lastchange = tickGet();	ifp->if_ibytes += m->m_pkthdr.len + sizeof (*eh);	if (eh->ether_dhost[0] & 1) {		if (bcmp((caddr_t)etherbroadcastaddr, (caddr_t)eh->ether_dhost,		    sizeof(etherbroadcastaddr)) == 0)			m->m_flags |= M_BCAST;		else			m->m_flags |= M_MCAST;		ifp->if_imcasts++;	}        if (ifp->if_flags & IFF_PROMISC)            {            /*             * do not hand over the non multicast packets to the ip stack             * if they are not destined to us, orelse it confuses the             * ip forwarding logic and keeps sending unnecessary redirects.             * If packets destined for other hosts have to be snooped they             * have to done through driver level hooks.             */                        if (!(m->m_flags & (M_BCAST | M_MCAST)))                {                if (bcmp ((caddr_t)ac->ac_enaddr, (caddr_t)eh->ether_dhost,                          sizeof(eh->ether_dhost)) != 0)                    {                    m_freem (m); 	/* free the packet chain */                    return;                     }                }            }        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区三区视频| 亚洲成人自拍网| 欧美精品一二三四| 91福利在线导航| 99v久久综合狠狠综合久久| 丁香六月久久综合狠狠色| 九九九久久久精品| 精品一区二区三区在线播放| 日韩av一区二| 韩国成人精品a∨在线观看| 久久精品久久综合| 极品少妇一区二区| 福利电影一区二区三区| 国产精品18久久久久久久久| 国产乱子轮精品视频| 国产老肥熟一区二区三区| 国产成人午夜视频| 99精品偷自拍| 欧洲一区二区三区在线| 欧美性猛交xxxxxx富婆| 欧美理论电影在线| 精品国产乱码久久久久久久久| 日韩美女视频一区二区 | 欧美色综合网站| 欧美片网站yy| 久久综合成人精品亚洲另类欧美 | 风间由美一区二区av101| 国产乱国产乱300精品| 91社区在线播放| 67194成人在线观看| 久久亚洲精精品中文字幕早川悠里| 国产午夜精品一区二区三区嫩草| 亚洲视频综合在线| 蜜乳av一区二区| 波多野结衣亚洲一区| 欧美美女直播网站| 久久免费看少妇高潮| 一区二区三区四区在线播放| 日本中文一区二区三区| 国产在线不卡视频| 欧美日韩在线免费视频| 久久综合视频网| 亚洲国产wwwccc36天堂| 国产精品88av| 欧美一区二视频| 亚洲欧美一区二区三区孕妇| 伦理电影国产精品| 日本高清视频一区二区| 久久久.com| 日韩av网站免费在线| 91麻豆免费观看| 国产亚洲一区二区在线观看| 午夜精品在线视频一区| 成人免费看视频| 日韩小视频在线观看专区| 亚洲精品免费在线| 国产v综合v亚洲欧| 日韩精品专区在线影院观看| 亚洲午夜激情网站| 99精品欧美一区二区三区小说| 日韩视频一区二区三区| 亚洲精品视频一区| www.欧美色图| 欧美激情一区二区三区全黄| 日韩**一区毛片| 在线成人免费视频| 亚洲成a人片综合在线| 91啪亚洲精品| 中文字幕一区二区三区四区不卡 | 日韩你懂的在线观看| 一区二区三区产品免费精品久久75 | 久久久91精品国产一区二区三区| 久久疯狂做爰流白浆xx| 欧美精品日韩一本| 国产精品全国免费观看高清 | 粉嫩绯色av一区二区在线观看 | 美女视频一区二区三区| 中文字幕一区二区不卡 | 成人午夜精品一区二区三区| 亚洲高清视频在线| 亚洲色图在线播放| 99视频一区二区| 亚洲美女精品一区| 欧美亚洲精品一区| 亚洲成人av资源| 日韩一区二区在线观看视频| 午夜电影一区二区三区| 欧美日本精品一区二区三区| 一区av在线播放| 舔着乳尖日韩一区| 欧美三级中文字幕| 亚洲成国产人片在线观看| 91麻豆视频网站| 亚洲成人福利片| 欧美日韩高清一区| 蜜臀av性久久久久av蜜臀妖精 | 国产精品青草久久| 91亚洲精品乱码久久久久久蜜桃 | 不卡的看片网站| 亚洲国产精品v| 中文字幕佐山爱一区二区免费| 日韩欧美精品三级| 久久国产人妖系列| 日韩欧美国产三级电影视频| 日本va欧美va精品| 欧美日韩国产综合视频在线观看| 日韩精品欧美精品| 精品久久免费看| 风间由美一区二区av101| 国产精品国产三级国产aⅴ原创 | 一区二区三区中文免费| 一本大道综合伊人精品热热| 亚洲欧美一区二区三区孕妇| 欧美体内she精高潮| 亚洲电影第三页| 欧美日韩国产精选| 国产福利91精品一区二区三区| 久久久久久久久久久黄色| 国产91丝袜在线观看| 综合亚洲深深色噜噜狠狠网站| 色婷婷国产精品久久包臀 | 久久精品视频在线免费观看| 美女视频一区在线观看| 亚洲女同女同女同女同女同69| 欧美色大人视频| 国产一区二区三区在线看麻豆| 国产精品成人一区二区艾草| 欧美性感一类影片在线播放| 麻豆国产欧美日韩综合精品二区 | 久久久精品黄色| 91电影在线观看| 首页国产欧美久久| 中文字幕一区二区三区在线播放| 欧美日韩国产精品成人| 狠狠色丁香婷婷综合| 亚洲欧美色图小说| 精品粉嫩aⅴ一区二区三区四区| 国产成人久久精品77777最新版本| 国产精品三级av在线播放| 欧美大肚乱孕交hd孕妇| 日本韩国精品在线| 国产精品白丝av| 1区2区3区精品视频| 欧美一区二区在线视频| 色诱视频网站一区| 国产福利91精品一区二区三区| 婷婷久久综合九色综合伊人色| 国产日韩v精品一区二区| 91色porny蝌蚪| 在线日韩av片| 成人激情免费电影网址| 裸体歌舞表演一区二区| 亚洲国产日韩av| 中文字幕一区二区5566日韩| 91精品国产黑色紧身裤美女| 91亚洲精品久久久蜜桃网站| 国产精品一线二线三线| 日本亚洲欧美天堂免费| 亚洲综合偷拍欧美一区色| 国产精品久久一级| 久久天天做天天爱综合色| 成人黄色综合网站| 91美女蜜桃在线| 91亚洲精品乱码久久久久久蜜桃| 国产精品夜夜嗨| 国产综合成人久久大片91| 奇米精品一区二区三区在线观看| 亚洲欧美综合另类在线卡通| 中文字幕制服丝袜一区二区三区| 久久午夜免费电影| 欧美本精品男人aⅴ天堂| 欧美精品九九99久久| 欧美日韩精品一区二区三区| 欧美视频一区二区| 日韩精品一区二区三区中文不卡| 欧美一区二区福利视频| 欧美一区二区三区四区在线观看 | 亚洲第一福利视频在线| 一区二区三区电影在线播| 一区二区三区电影在线播| 亚洲午夜精品网| 午夜在线成人av| 午夜精品免费在线| 捆绑紧缚一区二区三区视频| 日本不卡不码高清免费观看| 欧美a级理论片| 国产一区二区成人久久免费影院 | 日本道色综合久久| 精品视频一区二区不卡| 日韩片之四级片| 国产日韩av一区| 尤物av一区二区| 亚洲视频图片小说| 韩国成人精品a∨在线观看| 国产福利一区二区三区视频 | 久久精品一区二区三区不卡| 久久精品免费在线观看| 依依成人综合视频| 亚洲成av人影院在线观看网| 国内精品国产成人国产三级粉色|