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

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

?? if_ether.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* if_ether.c - network Ethernet address resolution protocol *//* Copyright 1984 - 2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1982, 1986, 1988, 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_ether.c	8.2 (Berkeley) 9/26/94 *//* * Ethernet address resolution protocol. * TODO: *	add "inuse/lock" bit (or ref. count) along with valid bit *//*modification history--------------------01u,24jun02,wap  optimize away some bcopy()s in arpresolve()01t,21may02,vvv  fixed ARP timer overflow problem (SPR #63908)01s,24jan02,vvv  fixed arpintr memory leak (SPR #72577)01r,18dec01,vvv  fixed build error from previous check-in01q,18dec01,vvv  fixed shared-memory booting problem (SPR #71023)01p,10dec01,vvv  allow send to any address assigned to an interface (SPR #71836)01o,01nov01,rae  compiler warnings, modified arpresolve error message (SPR #71242)01n,12oct01,rae  merge from truestack ver 01z base 01j (SPRs 63006, 68954,                 69112 ... plus Fastpath, revarp, etc.)01m,07feb01,spm  added merge record for 30jan01 update from version 01i of                 tor2_0_x branch (base 01h) and fixed modification history01l,30jan01,ijm  merged SPR# 28602 fixes (proxy ARP services are obsolete);                 fixed deleting ARP entries when proxy flag set01j,08nov99,pul  merging T2 cumulative patch 201k,08Nov98,pul  changed the argument ordering to ipEtherResolveRtn01i,29apr99,pul  Upgraded NPT phase3 code to tor2.0.001h,10may99,spm  fixed SIOCSARP handling to support ATF_PUBL flag (SPR #24397)01g,03sep98,n_s  fixed handling of IFF_NOARP flag in arpresolve. spr #2228001g,13jul98,n_s  added arpRxmitTicks.  spr # 2157701f,10jul97,vin  ifdefed revarp code, fixed warnings.01e,23apr97,vin  fixed SPR8445, rt_expire for arp route entry being set to 0.01d,29jan97,vin  fixed a bug in arpioctl(), sdl_alen field.01c,16dec96,vin  removed unnecessary htons in arprequest() and arpinput().01b,31oct96,vin	 changed m_gethdr(..) to mHdrClGet(..).  01a,03mar96,vin  created from BSD4.4 stuff,integrated with 02n of if_ether.c*//* * Ethernet address resolution protocol. * TODO: *      run at splnet (add ARP protocol intr.) *      link entries onto hash chains, keep free list *      add "inuse/lock" bit (or ref. count) along with valid bit */#include "vxWorks.h"#include "logLib.h"#include "stdio.h"#include "net/mbuf.h"#include "sys/socket.h"#include "errno.h"#include "sys/ioctl.h"#include "net/if.h"#include "net/if_dl.h"#include "net/route.h"#include "netinet/in.h"#include "netinet/in_systm.h"#include "netinet/in_var.h"#include "netinet/ip.h"#include "netinet/if_ether.h"#include "wdLib.h"#include "tickLib.h"#include "net/systm.h"#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#endif /* VIRTUAL_STACK */#ifdef ROUTER_STACK#include "wrn/fastPath/fastPathLib.h"#include "wrn/fastPath/fastPathIpP.h"#endif /* ROUTER_STACK */#ifdef INET#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET#include "wvNetLib.h"#endif /* INCLUDE_WVNET */#endif/* defines *//* defines */#define ENET_SIZE		6		/* Ethernet address size */#define DDB#define PROXY_HOOK		/* include proxy hook code */#define SIN(s) ((struct sockaddr_in *)s)#define SDL(s) ((struct sockaddr_dl *)s)#define SRP(s) ((struct sockaddr_inarp *)s)/* * ARP trailer negotiation.  Trailer protocol is not IP specific, * but ARP request/response use IP addresses. */#define ETHERTYPE_IPTRAILERS ETHERTYPE_TRAIL#define	rt_expire rt_rmx.rmx_expire#define ARP_RXMIT_TICKS_DFLT sysClkRateGet ()      /* Minimum number of ticks */					           /* between retransmission  */						   /* of ARP request          */#define TICK_GEQ(t1,t2) ((long)((t1) - (t2)) >= 0)/* externs */IMPORT STATUS netJobAdd (FUNCPTR, int, int, int, int, int);IMPORT int sysClkRateGet ();#ifndef VIRTUAL_STACKextern struct ifnet loif[];#endif /* VIRTUAL_STACK */extern  void _insque ();extern  void _remque ();int arpMaxEntries = 12;                      /* sensible default *//* globals */void arptfree (struct llinfo_arp *);#ifndef VIRTUAL_STACKstruct	llinfo_arp llinfo_arp = {&llinfo_arp, &llinfo_arp};int	arp_inuse, arp_allocated, arp_intimer;int	arpinit_done = 0;#endif /* VIRTUAL_STACK */struct	ifqueue arpintrq = {0, 0, 0, 50};int	useloopback = 1;int	arp_maxtries = 5; /* use loopback interface for local traffic *//* timer values */int	arpt_prune = (1*60);	/* walk list every 1 minutes */int	arpt_keep = (20*60);	/* once resolved, good for 20 more minutes */int	arpt_down = 20;		/* once declared down, don't send for 20 secs */#ifndef VIRTUAL_STACKint arpRxmitTicks = -1; 	/* Minimum number of ticks between */				/* retranmission of ARP request    */#endif /* VIRTUAL_STACK *//* proxy arp hook */#ifdef PROXY_HOOKFUNCPTR	 proxyArpHook = NULL;#endif/* locals */#ifndef VIRTUAL_STACKLOCAL WDOG_ID arptimerWd; /* watchdog timer for arptimer routine */#endif /* VIRTUAL_STACK */static char 	digits[] = "0123456789abcdef";#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* Set common fields of event identifiers for this module. */LOCAL UCHAR wvNetModuleId = WV_NET_IFETHER_MODULE;   /* Value for if_ether.c */LOCAL UCHAR wvNetLocalFilter = WV_NET_NONE; 	/* Available event filter */LOCAL ULONG wvNetEventId;	/* Event identifier: see wvNetLib.h */#endif    /* INCLUDE_WVNET */#endif/* forward declarations */#ifdef VIRTUAL_STACKvoid arptimer (int);#elsestatic	void arptimer (void *);#endif /* VIRTUAL_STACK */static	void arprequest (struct arpcom *, u_long *, u_long *, u_char *);static	struct llinfo_arp *arplookup (u_long, int, int);static	void in_arpinput (struct mbuf *);static  void arpEntryDelete (void);/* * Timeout routine.  Age arp_tab entries periodically. *//* ARGSUSED */#ifdef VIRTUAL_STACK/* must have a helper routine because of argument limitations *//* in WdStart */void arptimerRestart    (    int stackNum    )    {    netJobAdd ((FUNCPTR)arptimer, stackNum, 0, 0, 0, 0);    }void arptimer    (    int stackNum    /* used to set the stack correctly in wd routine*/    )    {    int s;    register struct llinfo_arp *la;    virtualStackNumTaskIdSet(stackNum);    s = splnet();    la = _llinfo_arp.la_next;    wdStart (arptimerWd, arpt_prune * sysClkRateGet(),             (FUNCPTR) arptimerRestart, (int) stackNum);    while (la != &_llinfo_arp)        {	register struct rtentry *rt = la->la_rt;	la = la->la_next;	if (rt->rt_expire && rt->rt_expire <= tickGet())	    {	    arptfree(la->la_prev); /* timer has expired; clear */	    }	}    splx (s);    }#else  /* just use original version */static voidarptimer(arg)	void *arg;    {    int s = splnet();    register struct llinfo_arp *la = llinfo_arp.la_next;    wdStart (arptimerWd, arpt_prune * sysClkRateGet(), (FUNCPTR) netJobAdd,	     (int)arptimer);    while (la != &llinfo_arp) 	{	register struct rtentry *rt = la->la_rt;	la = la->la_next;	if (rt->rt_expire && TICK_GEQ (tickGet(), rt->rt_expire))	    {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */            WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_INFO, 2, 15,                             WV_NETEVENT_ARPTIMER_FREE)#endif  /* INCLUDE_WVNET */#endif	    arptfree(la->la_prev); /* timer has expired; clear */	    }	}    splx (s);    }#endif /* VIRTUAL_STACK *//* IP multicast address to Ethernet mulitcast address mapping */void ipToEtherMCastMap     (      struct in_addr * ipaddr,     u_char *         enaddr     )     {     enaddr[0] = 0x01;     enaddr[1] = 0x00;     enaddr[2] = 0x5e;     enaddr[3] = ((u_char *)ipaddr)[1] & 0x7f;     enaddr[4] = ((u_char *)ipaddr)[2];     enaddr[5] = ((u_char *)ipaddr)[3];     return;     }/* IP to Ethernet address resolution protocol. This is just a wrapper for arpresolve* being called from ipOutput. This routine calls arpresolve with the appropriate* set of arguments. ** Returns 1 if the address is resolved and 0 if the address is not resolved.*/int ipEtherResolvRtn    (    FUNCPTR           ipArpCallBackRtn,    struct mbuf *     pMbuf,    struct sockaddr * dstIpAddr,    struct ifnet *    ifp,    struct rtentry *  rt,    char *            dstBuff    )    {    return(arpresolve ((struct arpcom *)ifp, rt, pMbuf, dstIpAddr, dstBuff));    }/* * Parallel to llc_rtrequest. */voidarp_rtrequest(req, rt, sa)	int req;	register struct rtentry *rt;	struct sockaddr *sa;{	register struct sockaddr *gate = rt->rt_gateway;	register struct llinfo_arp *la = (struct llinfo_arp *)rt->rt_llinfo;	static struct sockaddr_dl null_sdl = {sizeof(null_sdl), AF_LINK};	struct ifaddr *ifAddr = NULL;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */        WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_VERBOSE, 7, 17,                         WV_NETEVENT_ARPRTREQ_START, req)#endif  /* INCLUDE_WVNET */#endif#ifndef VIRTUAL_STACK	if (!arpinit_done) {	/*	 * if this routine is executed for the first time, then 	 * create the watch dog timer and kick of the arp timer.	 */		arpinit_done = 1;		arptimerWd = wdCreate ();		netJobAdd ((FUNCPTR)arptimer, 0, 0, 0, 0, 0);	}#endif /* VIRTUAL_STACK */	if (rt->rt_flags & RTF_GATEWAY)		return;	switch (req) {	case RTM_ADD:		/*		 * XXX: If this is a manually added route to interface		 * such as older version of routed or gated might provide,		 * restore cloning bit.		 */		if ((rt->rt_flags & RTF_HOST) == 0 &&		    SIN(rt_mask(rt))->sin_addr.s_addr != 0xffffffff)			rt->rt_flags |= RTF_CLONING;		if (rt->rt_flags & RTF_CLONING) {			/*			 * Case 1: This route should come from a route to iface.			 */			rt_setgate(rt, rt_key(rt),					(struct sockaddr *)&null_sdl);			gate = rt->rt_gateway;			SDL(gate)->sdl_type = rt->rt_ifp->if_type;			SDL(gate)->sdl_index = rt->rt_ifp->if_index;			/*			 * Give this route an expiration time, even though			 * it's a "permanent" route, so that routes cloned			 * from it do not need their expiration time set.			 */			rt->rt_expire = tickGet();                        /*                         * rt_expire could be zero if the interface is                         * initialized before the first tick of the system                         * typically 1/60th of a second.                         * All the arp routes cloned from this route will                         * inherit all the route metrics properties.                         * if rt_expire is 0 for an arp route entry,                         * it never kicks in arpwhohas () in arpresolve ().                         * This would result in not generating an arp request                         * for the host. This problem was seen on the MIPS                         * board p4000. --- Vinai. Fix for SPR 8445                         */                        if (rt->rt_expire == 0)                            rt->rt_expire++;			break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美电影一区| 一区二区三区色| 精品国产青草久久久久福利| 在线播放91灌醉迷j高跟美女 | 一区二区三区在线视频播放| 国产欧美日韩视频一区二区| www亚洲一区| 日韩精品在线一区二区| 欧美一区二区三区在线看| 欧美一区三区四区| 日韩三级视频中文字幕| 欧美一区二区精品久久911| 欧美顶级少妇做爰| 欧美一区二区精美| 精品国产91九色蝌蚪| 2024国产精品视频| 国产片一区二区| 中文字幕免费不卡在线| 亚洲少妇中出一区| 亚洲一区日韩精品中文字幕| 亚洲国产视频一区| 青草国产精品久久久久久| 午夜久久久久久久久| 日本伊人色综合网| 狠狠色丁香久久婷婷综合_中 | 精品视频999| 欧美一区二区三区电影| www亚洲一区| 国产精品二三区| 亚洲激情自拍视频| 天天影视涩香欲综合网| 国产在线日韩欧美| 不卡电影一区二区三区| 91久久人澡人人添人人爽欧美| 欧美日韩美少妇| 亚洲精品在线三区| 最新国产成人在线观看| 狠狠色狠狠色合久久伊人| 国产在线不卡视频| 91免费在线播放| 在线不卡中文字幕| 国产日产欧美一区| 一区二区三区中文字幕电影 | 国产99一区视频免费| av亚洲精华国产精华精华 | 国产精品国产自产拍高清av王其| 亚洲日本中文字幕区| 五月天丁香久久| 国产suv精品一区二区883| 日本韩国欧美一区二区三区| 欧美大尺度电影在线| 国产精品狼人久久影院观看方式| 亚洲国产wwwccc36天堂| 国产又黄又大久久| 欧美一a一片一级一片| 久久伊人中文字幕| 亚洲成va人在线观看| 国产精品911| 欧美一区二区三区不卡| 中文字幕一区二区三区av| 日韩成人午夜精品| 91在线观看免费视频| 欧美电影免费提供在线观看| 亚洲女性喷水在线观看一区| 日本va欧美va欧美va精品| 99re热这里只有精品免费视频| 欧美一区二区三级| 亚洲一区在线观看免费观看电影高清| 国产一区二区免费看| 欧美天堂一区二区三区| 国产精品全国免费观看高清| 666欧美在线视频| 国产性做久久久久久| 性欧美疯狂xxxxbbbb| 99re66热这里只有精品3直播| 日韩欧美视频在线| 亚洲二区在线观看| 91亚洲国产成人精品一区二三 | 亚洲日本在线天堂| 国产成人丝袜美腿| 欧美精品在线一区二区| 亚洲欧美色一区| 99久久久精品免费观看国产蜜| www成人在线观看| 久久99精品久久久久久| 欧美日产在线观看| 亚洲一区二区在线播放相泽| 不卡高清视频专区| 欧美国产精品一区二区三区| 国产精品一区专区| 亚洲精品一区二区三区在线观看| 丝袜美腿亚洲一区| 欧美日韩卡一卡二| 亚洲国产日韩在线一区模特| 99re视频精品| 成人欧美一区二区三区| 成人动漫一区二区三区| 国产色一区二区| 国产精品亚洲午夜一区二区三区| 欧美videofree性高清杂交| 奇米综合一区二区三区精品视频| 在线观看欧美日本| 亚洲国产人成综合网站| 欧美在线不卡一区| 亚洲午夜一区二区| 91国模大尺度私拍在线视频| 亚洲欧美激情视频在线观看一区二区三区| 成人午夜av影视| 最新国产精品久久精品| 99精品在线观看视频| 成人免费一区二区三区在线观看| 成人午夜电影小说| 国产精品久久久久久久久快鸭 | 天天综合网 天天综合色| 欧美无砖专区一中文字| 午夜精品爽啪视频| 91精品国产高清一区二区三区 | 国产精品一二一区| 国产欧美一区视频| aaa欧美色吧激情视频| 亚洲视频一二三区| 色综合天天在线| 亚洲国产一区二区视频| 91精品国产综合久久久久久久久久| 日韩福利视频导航| 精品电影一区二区| 成人av在线播放网站| 亚洲激情一二三区| 日韩一区二区三区四区| 国产一区在线观看视频| 国产精品网站在线观看| 在线视频你懂得一区二区三区| 亚洲成人免费看| 精品久久久久久久久久久院品网| 粉嫩av一区二区三区在线播放| 亚洲免费在线看| 制服丝袜中文字幕亚洲| 国内不卡的二区三区中文字幕| 亚洲国产激情av| 欧美日韩中文精品| 九色综合狠狠综合久久| 国产精品乱码一区二区三区软件 | 中文字幕综合网| 欧美三级中文字幕| 国产在线不卡一区| 亚洲精品国产第一综合99久久 | 欧美午夜一区二区三区| 久久精品国产亚洲a| 亚洲国产成人自拍| 欧美日韩久久一区二区| 国产精品99久久久| 亚洲成人av电影| 久久免费精品国产久精品久久久久| av一二三不卡影片| 久久99精品国产麻豆婷婷| 亚洲丝袜自拍清纯另类| 日韩一卡二卡三卡| 色香蕉成人二区免费| 久草精品在线观看| 亚洲激情第一区| 久久久综合激的五月天| 欧美日产国产精品| 波多野结衣精品在线| 免费在线成人网| 亚洲激情网站免费观看| 久久精品一区二区| 欧美日韩国产综合久久 | 911精品国产一区二区在线| 国产精品伊人色| 日本中文一区二区三区| 最新中文字幕一区二区三区 | 亚洲sss视频在线视频| 国产精品美日韩| 日韩三级在线观看| 欧美日韩视频专区在线播放| 成人妖精视频yjsp地址| 免费成人在线播放| 亚洲国产sm捆绑调教视频| 中文字幕高清一区| 精品国产欧美一区二区| 欧美日本一区二区| 在线日韩国产精品| 成人性生交大片免费看视频在线| 美女网站色91| 亚洲综合一区二区三区| 中文字幕一区二区三区在线不卡 | 欧美日韩国产综合视频在线观看| 波多野结衣在线一区| 国产一区亚洲一区| 久久国产精品99久久久久久老狼 | 在线免费av一区| 99久久婷婷国产综合精品电影| 国产乱妇无码大片在线观看| www.综合网.com| 国产伦精一区二区三区| 蜜臀av一级做a爰片久久| 午夜精品视频一区| 日韩精品五月天| 日韩精品每日更新| 日韩av电影免费观看高清完整版在线观看|