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

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

?? if_ether.c

?? 完整的TCP/IP源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* if_ether.c - network Ethernet address resolution protocol *//* Copyright 1984 - 2000 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--------------------01p,04apr00,pul  remove  FASTPATH references01o,22feb00,pul  made db_print_sa() extern01n,22feb00,spm  disabled debugging statements; restored prototypes to private01m,11feb00,gnn  first checkin to openstack (Siemens ONLY)01l,04jan99,pul  Fast Path Ip Modifications: call to  fpDelArpEntry()01k,08nov99,pul  merging T2 cumulative patch 201j,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 #22280 01g,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 "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 INET/* defines */#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          *//* externs */IMPORT void netJobAdd ();IMPORT sysClkRateGet ();extern	struct ifnet loif;extern  _insque ();extern  _remque ();/* globals */void arptfree (struct llinfo_arp *);struct	llinfo_arp llinfo_arp = {&llinfo_arp, &llinfo_arp};struct	ifqueue arpintrq = {0, 0, 0, 50};int	arp_inuse, arp_allocated, arp_intimer;int	arp_maxtries = 5;int	useloopback = 1;	/* use loopback interface for local traffic */int	arpinit_done = 0;/* 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 */int     arpRxmitTicks = -1;     /* Minimum number of ticks between */                                /*   retranmission of ARP request *//* proxy ary hook */#ifdef PROXY_HOOKFUNCPTR	 proxyArpHook = NULL;#endif/* locals *//* revarp state */#ifdef INCLUDE_REVARP /* XXX currently not supported */static struct	in_addr myip, srv_ip;static int	myip_initialized = 0;static int	revarp_in_progress = 0;static struct	ifnet *myip_ifp = NULL;#endif /* INCLUDE_REVARP */LOCAL WDOG_ID arptimerWd;	/* watchdog timer for arptimer routine */static char 	digits[] = "0123456789abcdef";/* forward declarations */static	void arprequest (struct arpcom *, u_long *, u_long *, u_char *);static	void arptimer (void *);static	struct llinfo_arp *arplookup (u_long, int, int);static	void in_arpinput (struct mbuf *);/* * Timeout routine.  Age arp_tab entries periodically. *//* ARGSUSED */static voidarptimer(arg)	void *arg;    {    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 && rt->rt_expire <= tickGet())	    {	    arptfree(la->la_prev); /* timer has expired; clear */	    }	}    }/* 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(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};		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 (arptimer);	}	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;		}		/* Announce a new entry if requested. */		if (rt->rt_flags & RTF_ANNOUNCE)			arprequest((struct arpcom *)rt->rt_ifp,			    &SIN(rt_key(rt))->sin_addr.s_addr,			    &SIN(rt_key(rt))->sin_addr.s_addr,			    (u_char *)LLADDR(SDL(gate)));		/*FALLTHROUGH*/	case RTM_RESOLVE:		if (gate->sa_family != AF_LINK ||		    gate->sa_len < sizeof(null_sdl)) {			logMsg("arp_rtrequest: bad gateway value",0,0,0,0,0,0);			break;		}		SDL(gate)->sdl_type = rt->rt_ifp->if_type;		SDL(gate)->sdl_index = rt->rt_ifp->if_index;		if (la != 0)			break; /* This happens on a route change */		/*		 * Case 2:  This route may come from cloning, or a manual route		 * add with a LL address.		 */		R_Malloc(la, struct llinfo_arp *, sizeof(*la));		rt->rt_llinfo = (caddr_t)la;		if (la == 0) {			logMsg("arp_rtrequest: malloc failed\n",0,0,0,0,0,0);			break;		}		arp_inuse++, arp_allocated++;		Bzero(la, sizeof(*la));		la->la_rt = rt;		rt->rt_flags |= RTF_LLINFO;		insque(la, &llinfo_arp);		if (SIN(rt_key(rt))->sin_addr.s_addr ==		    (IA_SIN(rt->rt_ifa))->sin_addr.s_addr) {		    /*		     * This test used to be		     *	if (loif.if_flags & IFF_UP)		     * It allowed local traffic to be forced		     * through the hardware by configuring the loopback down.		     * However, it causes problems during network configuration		     * for boards that can't receive packets they send.		     * It is now necessary to clear "useloopback" and remove		     * the route to force traffic out to the hardware.		     */			rt->rt_expire = 0;			Bcopy(((struct arpcom *)rt->rt_ifp)->ac_enaddr,				LLADDR(SDL(gate)), SDL(gate)->sdl_alen = 6);			if (useloopback)				rt->rt_ifp = &loif;		}		break;	case RTM_DELETE:		if (la == 0)			break;		arp_inuse--;		remque(la);		rt->rt_llinfo = 0;		rt->rt_flags &= ~RTF_LLINFO;		if (la->la_hold)			m_freem(la->la_hold);		Free((caddr_t)la);	}}/* * Broadcast an ARP packet, asking who has addr on interface ac. */voidarpwhohas(ac, addr)	register struct arpcom *ac;	register struct in_addr *addr;{	arprequest(ac, &ac->ac_ipaddr.s_addr, &addr->s_addr, ac->ac_enaddr);}/* * Broadcast an ARP request. Caller specifies: *	- arp header source ip address *	- arp header target ip address *	- arp header source ethernet address */static voidarprequest(ac, sip, tip, enaddr)	register struct arpcom *ac;	register u_long *sip, *tip;	register u_char *enaddr;{	register struct mbuf *m;	register struct ether_header *eh;	register struct ether_arp *ea;	struct sockaddr sa;	if ((m = mHdrClGet(M_DONTWAIT, MT_DATA, 			   sizeof(*ea), TRUE)) == NULL)	    return;	m->m_len = sizeof(*ea);	m->m_pkthdr.len = sizeof(*ea);	MH_ALIGN(m, sizeof(*ea));	ea = mtod(m, struct ether_arp *);	eh = (struct ether_header *)sa.sa_data;	bzero((caddr_t)ea, sizeof (*ea));	bcopy((caddr_t)etherbroadcastaddr, (caddr_t)eh->ether_dhost,	    sizeof(eh->ether_dhost));	eh->ether_type = ETHERTYPE_ARP;		/* if_output will swap */	ea->arp_hrd = htons(ARPHRD_ETHER);	ea->arp_pro = htons(ETHERTYPE_IP);	ea->arp_hln = sizeof(ea->arp_sha);	/* hardware address length */	ea->arp_pln = sizeof(ea->arp_spa);	/* protocol address length */	ea->arp_op = htons(ARPOP_REQUEST);	bcopy((caddr_t)enaddr, (caddr_t)ea->arp_sha, sizeof(ea->arp_sha));	bcopy((caddr_t)sip, (caddr_t)ea->arp_spa, sizeof(ea->arp_spa));	bcopy((caddr_t)tip, (caddr_t)ea->arp_tpa, sizeof(ea->arp_tpa));	sa.sa_family = AF_UNSPEC;	sa.sa_len = sizeof(sa);	(*ac->ac_if.if_output)(&ac->ac_if, m, &sa, (struct rtentry *)0);}/* * Resolve an IP address into an ethernet address.  If success,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷自拍亚洲精品播放| 99热在这里有精品免费| 亚洲男人都懂的| 亚洲欧美日韩一区二区三区在线观看| 91精品国产欧美日韩| 欧美一个色资源| 精品黑人一区二区三区久久| 久久美女高清视频| 亚洲国产精品高清| 国产精品乱人伦| 亚洲激情综合网| 天天综合色天天综合| 美腿丝袜亚洲一区| 国产高清久久久久| 91丨porny丨蝌蚪视频| 欧美日韩亚洲丝袜制服| 精品日韩一区二区| 国产精品激情偷乱一区二区∴| 亚洲女人****多毛耸耸8| 亚洲国产精品一区二区久久恐怖片| 亚洲国产精品久久久久婷婷884 | 亚洲三级免费观看| 亚洲午夜免费电影| 狠狠色丁香久久婷婷综合_中 | 亚洲黄色av一区| 亚洲成人你懂的| 国内精品国产成人| 一本大道综合伊人精品热热| 5858s免费视频成人| 国产人成一区二区三区影院| 亚洲国产日韩在线一区模特| 麻豆精品精品国产自在97香蕉| 成人免费黄色在线| 91精品国产欧美一区二区成人| 国产精品成人一区二区三区夜夜夜| 一区二区三区四区不卡视频| 极品少妇xxxx偷拍精品少妇| 91热门视频在线观看| 日韩欧美成人一区二区| 亚洲精品国产精华液| 国产在线播放一区二区三区| 欧美亚洲国产一区二区三区va| 久久久久久麻豆| 日日夜夜精品视频免费| 91看片淫黄大片一级| 精品乱人伦小说| 无码av中文一区二区三区桃花岛| 成人动漫一区二区三区| 亚洲精品在线一区二区| 日韩精品午夜视频| 在线观看一区不卡| 中文字幕电影一区| 精品一区二区三区视频| 欧美精品精品一区| 亚洲一级片在线观看| 99精品国产99久久久久久白柏| www久久久久| 久久精品国产精品亚洲红杏| 在线电影院国产精品| 亚洲国产裸拍裸体视频在线观看乱了 | 这里只有精品视频在线观看| 一区二区三区中文字幕| 99久久久无码国产精品| 日本一区二区三区在线不卡 | 91影院在线免费观看| 国产日产欧美一区| 国产毛片精品视频| 久久久精品国产免费观看同学| 青青国产91久久久久久| 欧美一区二区在线看| 日本欧美一区二区三区乱码| 欧美乱妇23p| 青青青伊人色综合久久| 日韩欧美精品在线视频| 精一区二区三区| 久久久久久久久99精品| 丰满岳乱妇一区二区三区| 亚洲国产精品成人久久综合一区| 国产成人综合自拍| 国产精品久久久久天堂| av一区二区久久| 亚洲精品成a人| 欧美美女视频在线观看| 青青草91视频| 久久久99精品免费观看| 成人免费视频国产在线观看| 亚洲图片激情小说| 欧美日韩精品综合在线| 日韩福利电影在线观看| 久久综合色婷婷| 99精品国产热久久91蜜凸| 亚洲午夜电影在线| 日韩片之四级片| 国产999精品久久久久久| 亚洲欧美电影一区二区| 制服丝袜亚洲精品中文字幕| 久久国产精品色| 国产精品久久99| 欧美日韩国产高清一区二区三区| 精品在线观看视频| 亚洲日本青草视频在线怡红院| 欧美网站大全在线观看| 国产自产视频一区二区三区| 综合亚洲深深色噜噜狠狠网站| 欧美日韩精品久久久| 国产精品888| 一区二区三区精品在线| 精品1区2区在线观看| 色综合久久中文字幕综合网| 开心九九激情九九欧美日韩精美视频电影 | 日韩国产欧美一区二区三区| 国产亚洲欧美一级| 欧美精品在线观看播放| 成人午夜电影网站| 久久国产精品72免费观看| 亚洲欧美综合网| 亚洲精品一区二区三区影院 | 欧美一级xxx| 一本到一区二区三区| 国产一区欧美二区| 日韩—二三区免费观看av| 中文字幕亚洲欧美在线不卡| 欧美成人综合网站| 欧美在线视频全部完| 成人免费黄色大片| 国产九色精品成人porny| 视频一区二区中文字幕| 亚洲黄色免费网站| 国产精品九色蝌蚪自拍| 国产午夜精品久久| 精品国产成人系列| 欧美精品1区2区3区| 91久久精品网| 91在线播放网址| zzijzzij亚洲日本少妇熟睡| 国产在线精品一区二区三区不卡| 香蕉av福利精品导航| 亚洲最大色网站| 一区二区国产盗摄色噜噜| 国产精品不卡一区二区三区| 国产午夜精品在线观看| 久久久久综合网| 久久午夜色播影院免费高清 | 夜色激情一区二区| 亚洲日本青草视频在线怡红院 | 亚洲三级在线播放| 中文字幕中文乱码欧美一区二区| 国产欧美日韩卡一| 国产欧美精品一区二区三区四区 | 91精品国产免费久久综合| 欧美日韩在线三区| 欧美日韩中文字幕精品| 欧美日韩小视频| 51精品国自产在线| 欧美一区二区三区爱爱| 日韩精品一区国产麻豆| 精品乱人伦一区二区三区| 久久久影院官网| 中文字幕av资源一区| 综合婷婷亚洲小说| 亚洲成av人片在线| 日韩精品久久理论片| 精品综合免费视频观看| 成人午夜av电影| 日本韩国一区二区三区视频| 欧美日韩成人一区| 日韩网站在线看片你懂的| 久久久久青草大香线综合精品| 久久久久久久久久久99999| 中文字幕一区三区| 亚洲综合一区在线| 久久综合综合久久综合| 国产a精品视频| 日本韩国欧美三级| 欧美大肚乱孕交hd孕妇| 国产精品久久影院| 亚洲超丰满肉感bbw| 国产最新精品精品你懂的| 国产91丝袜在线播放0| 欧美亚洲精品一区| 久久免费电影网| 夜夜亚洲天天久久| 精品一区二区国语对白| 96av麻豆蜜桃一区二区| 91精品国产综合久久久久久漫画| 久久久国产一区二区三区四区小说 | www.爱久久.com| 欧美二区在线观看| 欧美国产在线观看| 午夜视频在线观看一区| 丁香五精品蜜臀久久久久99网站 | 国产亚洲美州欧州综合国| 亚洲女人****多毛耸耸8| 久久电影国产免费久久电影 | 麻豆成人免费电影| 成人小视频在线| 精品欧美一区二区三区精品久久| 一区二区三区四区不卡视频| 国产suv一区二区三区88区| 3d成人h动漫网站入口|