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

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

?? if_subr.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	etype = ntohs(eh->ether_type);        /* add code here to process IEEE802.3 LLC format, Hook!! */        /* demux the packet and hand off the ip layer */        do_protocol_with_type (etype, m , ac, m->m_pkthdr.len); }/* * Perform common duties while attaching to interface list */voidether_ifattach(ifp)	register struct ifnet *ifp;{	register struct ifaddr *ifa;	register struct sockaddr_dl *sdl;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */        WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_VERBOSE, 11, 14,                         WV_NETEVENT_ETHERIFATTACH_START, ifp)#endif  /* INCLUDE_WVNET */#endif	ifp->if_type = IFT_ETHER;	ifp->if_addrlen = 6;	ifp->if_hdrlen = 14;	ifp->if_mtu = ETHERMTU;	for (ifa = ifp->if_addrlist; ifa; ifa = ifa->ifa_next)		if ((sdl = (struct sockaddr_dl *)ifa->ifa_addr) &&		    sdl->sdl_family == AF_LINK) {			sdl->sdl_type = IFT_ETHER;			sdl->sdl_alen = ifp->if_addrlen;			bcopy((caddr_t)((struct arpcom *)ifp)->ac_enaddr,			      LLADDR(sdl), ifp->if_addrlen);			break;		}}/* * Add an Ethernet multicast address or range of addresses to the list for a * given interface. */intether_addmulti(ifr, ac)	struct ifreq *ifr;	register struct arpcom *ac;{	register struct ether_multi *enm;	struct sockaddr_in *sin;	u_char addrlo[6];	u_char addrhi[6];	int s = splimp();/* * XXX - This event cannot currently occur: the ether_addmulti() routine *       provides multicasting support which is not available for VxWorks *       BSD Ethernet drivers.#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_VERBOSE event @/        WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_VERBOSE, 12, 15,                         WV_NETEVENT_ADDMULT_START, ac->ac_if)#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */	switch (ifr->ifr_addr.sa_family) {	case AF_UNSPEC:		bcopy((char *)ifr->ifr_addr.sa_data, (char *)addrlo, 6);		bcopy((char *) addrlo, (char *)addrhi, 6);		break;#ifdef INET	case AF_INET:		sin = (struct sockaddr_in *)&(ifr->ifr_addr);		if (sin->sin_addr.s_addr == INADDR_ANY) {			/*			 * An IP address of INADDR_ANY means listen to all			 * of the Ethernet multicast addresses used for IP.			 * (This is for the sake of IP multicast routers.)			 */			bcopy((char *)ether_ipmulticast_min, (char *)addrlo, 6);			bcopy((char *)ether_ipmulticast_max, (char *)addrhi, 6);		}		else {			ETHER_MAP_IP_MULTICAST(&sin->sin_addr, addrlo);			bcopy((char *)addrlo, (char *)addrhi, 6);		}		break;#endif	default:		splx(s);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */                WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 4, 8,                                WV_NETEVENT_ADDMULT_AFNOTSUPP,                                ifr->ifr_addr.sa_family) #endif  /* INCLUDE_WVNET */#endif		return (EAFNOSUPPORT);	}	/*	 * Verify that we have valid Ethernet multicast addresses.	 */	if ((addrlo[0] & 0x01) != 1 || (addrhi[0] & 0x01) != 1) {		splx(s);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */                WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 5, 9,                                WV_NETEVENT_ADDMULT_BADADDR,                                ac->ac_if) #endif  /* INCLUDE_WVNET */#endif		return (EINVAL);	}	/*	 * See if the address range is already in the list.	 */	ETHER_LOOKUP_MULTI(addrlo, addrhi, ac, enm);	if (enm != NULL) {		/*		 * Found it; just increment the reference count.		 */		++enm->enm_refcount;		splx(s);		return (0);	}	/*	 * New address or range; malloc a new multicast record	 * and link it into the interface's multicast list.	 */        MALLOC (enm, struct ether_multi *, sizeof(*enm), MT_IFMADDR, 		M_DONTWAIT);	if (enm == NULL) {		splx(s);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_EMERGENCY event */                WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_EMERGENCY, 6, 1,                                 WV_NETEVENT_ADDMULT_NOBUFS)#endif  /* INCLUDE_WVNET */#endif		return (ENOBUFS);	}	bcopy((char *)addrlo, (char *)enm->enm_addrlo, 6);	bcopy((char *)addrhi, (char *)enm->enm_addrhi, 6);	enm->enm_ac = ac;	enm->enm_refcount = 1;	enm->enm_next = ac->ac_multiaddrs;	ac->ac_multiaddrs = enm;	ac->ac_multicnt++;	splx(s);	/*	 * Return ENETRESET to inform the driver that the list has changed	 * and its reception filter should be adjusted accordingly.	 */	return (ENETRESET);}/* * Delete a multicast address record. */intether_delmulti(ifr, ac)	struct ifreq *ifr;	register struct arpcom *ac;{	register struct ether_multi *enm;	register struct ether_multi **p;	struct sockaddr_in *sin;	u_char addrlo[6];	u_char addrhi[6];	int s = splimp();/* * XXX - This event cannot currently occur: the ether_delmulti() routine *       provides multicasting support which is not available for VxWorks *       BSD Ethernet drivers.#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_VERBOSE event @/        WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_VERBOSE, 13, 16,                            WV_NETEVENT_DELMULT_START, ac->ac_if)#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */	switch (ifr->ifr_addr.sa_family) {	case AF_UNSPEC:		bcopy((char *)ifr->ifr_addr.sa_data, (char *)addrlo, 6);		bcopy((char *)addrlo, (char *)addrhi, 6);		break;#ifdef INET	case AF_INET:		sin = (struct sockaddr_in *)&(ifr->ifr_addr);		if (sin->sin_addr.s_addr == INADDR_ANY) {			/*			 * An IP address of INADDR_ANY means stop listening			 * to the range of Ethernet multicast addresses used			 * for IP.			 */			bcopy((char *)ether_ipmulticast_min, (char *)addrlo, 6);			bcopy((char *)ether_ipmulticast_max, (char *)addrhi, 6);		}		else {			ETHER_MAP_IP_MULTICAST(&sin->sin_addr, addrlo);			bcopy((char *)addrlo, (char *)addrhi, 6);		}		break;#endif	default:		splx(s);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */                WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 6, 10,                                 WV_NETEVENT_DELMULT_AFNOTSUPP,                                 ifr->ifr_addr.sa_family)#endif  /* INCLUDE_WVNET */#endif		return (EAFNOSUPPORT);	}	/*	 * Look up the address in our list.	 */	ETHER_LOOKUP_MULTI(addrlo, addrhi, ac, enm);	if (enm == NULL) {		splx(s);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */                WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 7, 11,                                 WV_NETEVENT_DELMULT_BADADDR, ac->ac_if)#endif  /* INCLUDE_WVNET */#endif		return (ENXIO);	}	if (--enm->enm_refcount != 0) {		/*		 * Still some claims to this record.		 */		splx(s);		return (0);	}	/*	 * No remaining claims to this record; unlink and free it.	 */	for (p = &enm->enm_ac->ac_multiaddrs;	     *p != enm;	     p = &(*p)->enm_next)		continue;	*p = (*p)->enm_next;	FREE(enm, MT_IFMADDR);	ac->ac_multicnt--;	splx(s);	/*	 * Return ENETRESET to inform the driver that the list has changed	 * and its reception filter should be adjusted accordingly.	 */	return (ENETRESET);}/********************************************************************************* check_trailer - check ethernet frames that have trailers following them** Decypher the ethernet frames that are encoded via trailer protocol which* has a link level type field that contains a value which is an encoding of* the size of the data portion.  The original BSD 4.2 and 4.3 TCP/IP* implementations use the trailer protocol to accomplish more efficient* copying of data.  Basically the idea was to put the variable lenght protocol* headers (TCP, UDP, IP headers) at the end of a page aligned data and use* the link-level type field (ethernet type) to indicate both the use of a* specialized framing protocol as well as the length of the data following* the ethernet header.  The original link-level type field and the length* of the protocol headers following the data portion are attached between* the data portion (which should be of length multiple of 512 bytes) and* protocol headers.  (size of data portion == (type - 0x1000) * 415)** Upon return, 'pOff' will contain NULL if trailer protocol is not being* used.  Otherwise, 'pOff' points to the trailer header and 'pLen'* will contain the size of the frame.** NOMANUAL*/void check_trailer (eh, pData, pLen, pOff, ifp)    FAST struct ether_header 	*eh;	/* ethernet header */    FAST unsigned char 		*pData;	/* data immediately after 'eh' */    FAST int 			*pLen;	/* value/result input data length */    FAST int 			*pOff;	/* result -- points to trailer header */    FAST struct ifnet 		*ifp;	/* network interface */    {#if 0 /* XXX No support for trailers in BSD44 vxWorks */        FAST int resid;    eh->ether_type = ntohs((u_short)eh->ether_type);    if ((eh->ether_type >= ETHERTYPE_TRAIL)  &&	(eh->ether_type < ETHERTYPE_TRAIL+ETHERTYPE_NTRAILER))	{	*pOff = (eh->ether_type - ETHERTYPE_TRAIL) * 512;	if (*pOff >= ifp->if_mtu)	    return;		/* sanity */	eh->ether_type = ntohs (*(u_short *) (pData + *pOff));	resid          = ntohs (*(u_short *) (pData + *pOff + 2));	if ((*pOff + resid) > *pLen)	    return;		/* sanity */	*pLen = *pOff + resid;	}    else	*pOff = 0;#endif /* XXX No trailer support in BSD44 */        }/********************************************************************************* bcopy_to_mbufs - copy data into mbuf chain** Copies up to <totlen> bytes of data from <buf0> into a freshly allocated* mbuf. The <off0> parameter indicates the amount of trailer encapsulation,* which was formerly handled according to the trailer protocol described in* check_trailer(). Since trailer encapsulation is not supported in BSD 4.4,* that parameter is unused. The <width> argument supports machines which * have special byte alignment requirements when copying data from device * I/O buffers to main memory.  A macro function called 'copy_to_mbufs' is * provided in the "mbuf.h" file for compatability with SunOS, which doesn't * support the <width> parameter. This function uses mbuf clusters when possible* to enhance network throughput.** RETURNS: first mbuf or 0 if error** NOMANUAL*/struct mbuf *bcopy_to_mbufs (buf0, totlen, off0, ifp, width)    u_char		*buf0;		/* buffer to be copied into mbufs */    int			totlen;		/* number of bytes to be copied */    int			off0;		/* trailer protocol indicative */    struct ifnet	*ifp;		/* network interface */    int			width;		/* copy data by this unit width */    {    return (m_devget ((char *) buf0, totlen, width, ifp, NULL));    }/******************************************************************************** copyFromMbufs - copy data from an mbuf chain** This routine copies data from an mbuf chain into a given buffer.* The length of the data copied from the mbuf chain is returned.* The argument width is provided for machines that have special byte alignment* requirements when copying data to an I/O buffer of the device from main* memory. This routine frees the mbuf chain passed to it. ** This routine should not be used since it can cause unaligned memory accesses* resulting in target crashes.* * RETURNS: length of data copied.** NOMANUAL*/int copyFromMbufs    (    char * 		pIoBuf,		/* buffer to copy mbufs into */    struct mbuf * 	pMbuf,		/* pointer to an mbuf chain */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区日韩一区| 99精品视频在线观看免费| 国产激情一区二区三区四区| 国产成人av电影在线观看| 97久久超碰精品国产| 欧美日韩成人综合天天影院| 欧美一区二区三区性视频| 中文字幕不卡的av| 石原莉奈在线亚洲二区| 丁香六月综合激情| 欧美丰满一区二区免费视频| 久久久91精品国产一区二区三区| 亚洲欧美日韩一区| 久久国产生活片100| 91在线观看一区二区| 日韩一卡二卡三卡四卡| 亚洲欧美激情在线| 精品一区二区三区不卡 | 在线播放中文一区| 国产偷国产偷精品高清尤物| 亚洲午夜激情网站| 成人国产精品视频| 精品蜜桃在线看| 亚洲一二三级电影| 成人黄色软件下载| 欧美电影免费观看高清完整版在线 | 一区二区三区加勒比av| 国产一区二区调教| 7777女厕盗摄久久久| 国产精品国产三级国产三级人妇| 强制捆绑调教一区二区| 91免费看视频| 久久久久9999亚洲精品| 强制捆绑调教一区二区| 欧美在线综合视频| 中文字幕视频一区| 国产毛片精品视频| 91精品久久久久久久久99蜜臂| 亚洲欧美乱综合| 国产成人精品一区二区三区四区| 91精品国产综合久久精品| 伊人开心综合网| www.性欧美| 国产亚洲va综合人人澡精品| 九九**精品视频免费播放| 欧美乱熟臀69xxxxxx| 亚洲美女视频在线观看| 99久久夜色精品国产网站| 欧美精品一区二区在线播放| 日本色综合中文字幕| 欧美视频你懂的| 亚洲人被黑人高潮完整版| 成人免费观看视频| 中文字幕欧美国产| 国产999精品久久| 久久久777精品电影网影网| 久久99精品国产.久久久久久| 51精品久久久久久久蜜臀| 亚洲激情图片qvod| 91猫先生在线| 成人免费一区二区三区在线观看| 成人网男人的天堂| 国产精品蜜臀av| kk眼镜猥琐国模调教系列一区二区 | 日韩av一二三| 777午夜精品免费视频| 午夜电影网一区| 欧美精品一二三区| 视频一区二区不卡| 日韩三级免费观看| 久久99热这里只有精品| 日韩欧美国产wwwww| 久色婷婷小香蕉久久| 精品99999| 国产精品中文欧美| 国产精品久久久久天堂| www.色综合.com| 亚洲激情五月婷婷| 欧美日韩大陆在线| 麻豆freexxxx性91精品| 精品国产成人系列| 成人性生交大片免费看中文网站| 欧美激情综合在线| 色悠悠久久综合| 亚洲成人在线免费| 日韩欧美国产三级| 岛国一区二区在线观看| 亚洲欧洲制服丝袜| 欧美老年两性高潮| 九九在线精品视频| 中文字幕精品一区二区三区精品 | 亚洲免费电影在线| 欧美日韩免费观看一区三区| 婷婷久久综合九色国产成人| 91精品国产色综合久久ai换脸 | 国产清纯白嫩初高生在线观看91 | 亚洲综合视频网| 91精品国产日韩91久久久久久| 蜜桃久久av一区| 国产三区在线成人av| 99这里只有精品| 日韩二区三区四区| 久久综合狠狠综合久久综合88| 成人精品亚洲人成在线| 亚洲综合在线电影| 欧美成人精品1314www| 国产成人免费视频精品含羞草妖精| 国产精品免费网站在线观看| 欧美色视频在线观看| 国产在线视频一区二区| 一区二区三区.www| 日韩精品一区二区三区中文不卡| 成人妖精视频yjsp地址| 亚洲一区二区美女| 久久亚洲精品国产精品紫薇| 97se亚洲国产综合自在线观| 首页综合国产亚洲丝袜| 国产欧美一区二区精品性| 在线看日本不卡| 国产一区二区三区高清播放| 亚洲最大的成人av| 久久精品在线观看| 在线电影院国产精品| 成人听书哪个软件好| 青青国产91久久久久久| 专区另类欧美日韩| 2023国产精品视频| 欧美视频一区二区三区在线观看| 国产一区二区三区高清播放| 亚洲18女电影在线观看| 国产精品久久久久久久久免费樱桃| 欧美电影影音先锋| www.欧美.com| 国模大尺度一区二区三区| 亚洲成人av一区二区| 国产精品九色蝌蚪自拍| 日韩免费一区二区| 欧洲一区二区三区在线| 成人免费视频网站在线观看| 日韩精品亚洲专区| 综合激情网...| 国产欧美一区二区精品忘忧草| 91.成人天堂一区| 91麻豆精品视频| 国产高清久久久| 久久激情综合网| 日韩电影在线一区二区| 亚洲宅男天堂在线观看无病毒| 日本一区二区三区国色天香| 日韩精品一区二区三区中文不卡 | 香蕉乱码成人久久天堂爱免费| 国产精品超碰97尤物18| 久久免费视频一区| 91精品国产综合久久福利| 欧美日韩一区在线| 色国产综合视频| 91亚洲精品久久久蜜桃网站| 成人午夜激情视频| 国产精品资源网站| 国产一区二区三区精品欧美日韩一区二区三区 | 成人在线综合网站| 国内外精品视频| 免费看黄色91| 男女激情视频一区| 日本不卡一区二区三区| 亚洲曰韩产成在线| 亚洲老妇xxxxxx| 亚洲欧美偷拍三级| 亚洲免费在线播放| 一区二区在线观看av| 亚洲精品视频一区| 一区二区三区不卡视频| 综合激情成人伊人| 亚洲视频精选在线| 亚洲色图制服丝袜| 一区二区三区四区高清精品免费观看| 国产精品久久一级| 亚洲欧洲性图库| 亚洲天堂网中文字| 亚洲黄色尤物视频| 亚洲一卡二卡三卡四卡无卡久久| 亚洲一区影音先锋| 亚洲午夜在线视频| 婷婷成人激情在线网| 日韩精品电影在线观看| 免费人成在线不卡| 国内精品视频666| 国产精品18久久久久| 国产精品99久久久久| 国产+成+人+亚洲欧洲自线| 国产成人啪免费观看软件| 成人激情动漫在线观看| 99综合影院在线| 欧美吻胸吃奶大尺度电影| 欧美久久高跟鞋激| 欧美电视剧在线看免费| 国产欧美一区二区在线| 亚洲欧美日韩一区| 五月婷婷色综合| 激情综合网天天干|