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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? if_ether.c

?? 完整的TCP/IP源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* 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,

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人h版在线观看| 国产激情精品久久久第一区二区| 日韩丝袜情趣美女图片| 成年人午夜久久久| 久久福利视频一区二区| 亚洲一区视频在线| 久久亚洲影视婷婷| 91麻豆精品国产| 91啪亚洲精品| 国产99久久久久| 裸体歌舞表演一区二区| 亚洲国产精品久久久男人的天堂 | 欧美日韩一本到| 成人激情午夜影院| 经典三级一区二区| 视频一区二区不卡| 亚洲一区二区三区免费视频| 国产精品三级av在线播放| 久久综合色鬼综合色| 欧美一区二区三区免费观看视频 | 国产不卡免费视频| 日本成人在线看| 亚洲国产中文字幕在线视频综合 | 国产精品久久久久毛片软件| 久久婷婷成人综合色| 日韩欧美精品在线| 欧美一级欧美一级在线播放| 欧美蜜桃一区二区三区| 欧美日韩一区三区| 欧美日韩免费一区二区三区| 欧美视频日韩视频| 欧美日韩精品欧美日韩精品一综合| 99精品国产一区二区三区不卡| 国产成人综合亚洲91猫咪| 精品一区二区三区免费毛片爱| 奇米色777欧美一区二区| 视频一区视频二区在线观看| 亚洲超碰97人人做人人爱| 一区二区三区四区在线播放| 一区二区三区在线视频免费 | 国产亚洲午夜高清国产拍精品| 欧美大片在线观看一区| 精品免费日韩av| 久久视频一区二区| 日韩精品色哟哟| 午夜激情久久久| 日韩国产欧美在线观看| 麻豆精品国产传媒mv男同 | 激情六月婷婷久久| 国产在线视频一区二区三区| 国产一区二区不卡在线| 粉嫩av一区二区三区粉嫩| www.欧美日韩国产在线| 欧美在线free| 制服丝袜av成人在线看| 欧美精品一区二区三区高清aⅴ | 亚洲国产成人午夜在线一区| 中文字幕不卡在线播放| 一区二区高清在线| 日韩成人伦理电影在线观看| 亚洲精品欧美激情| 日韩国产在线观看一区| 国内精品写真在线观看| 成人av中文字幕| 欧洲精品在线观看| 91精品福利在线一区二区三区 | 精品国产网站在线观看| 中文字幕av在线一区二区三区| 亚洲欧美区自拍先锋| 奇米综合一区二区三区精品视频| 国产九色sp调教91| av电影在线观看完整版一区二区| 欧美视频在线一区| 精品国产露脸精彩对白| 亚洲私人黄色宅男| 日韩国产欧美在线播放| 欧美一区二区久久| 日韩久久一区二区| 免费人成在线不卡| 99re这里都是精品| 欧美成人乱码一区二区三区| ...av二区三区久久精品| 日韩激情一区二区| av一本久道久久综合久久鬼色| 欧美午夜不卡视频| 国产日韩精品一区| 视频一区视频二区中文| 成人av中文字幕| 日韩视频免费观看高清完整版| 中文字幕日韩av资源站| 久久国产精品99久久人人澡| av影院午夜一区| 精品成人一区二区| 亚洲高清免费观看| 成人av手机在线观看| 日韩一区二区三区四区| 亚洲日本在线视频观看| 琪琪一区二区三区| 欧美无砖砖区免费| 日韩美女视频一区| 粉嫩高潮美女一区二区三区| 欧美电影一区二区| 亚洲欧美日韩久久精品| 韩国av一区二区三区| 在线视频你懂得一区| 日本一二三不卡| 精品一区二区三区香蕉蜜桃| 欧美精品久久一区| 玉米视频成人免费看| 成人av综合一区| 久久久久久久久99精品| 男人的j进女人的j一区| 欧美日韩国产经典色站一区二区三区 | 欧美日韩国产免费一区二区| |精品福利一区二区三区| 激情久久五月天| 日韩欧美在线观看一区二区三区| 亚洲激情在线激情| 91影院在线免费观看| 国产亚洲欧美激情| 国产美女在线精品| 日韩亚洲欧美高清| 麻豆视频观看网址久久| 欧美日产在线观看| 亚洲一本大道在线| 欧美日韩在线精品一区二区三区激情 | 91影院在线观看| 中文字幕中文在线不卡住| 丁香婷婷综合激情五月色| 久久久久久**毛片大全| 国产精品一品二品| 欧美高清在线一区二区| 成人免费视频视频在线观看免费| 久久伊人蜜桃av一区二区| 国产一区二区视频在线| 久久综合国产精品| 国产自产视频一区二区三区| 久久人人97超碰com| 国产一区二区精品久久99| 精品国产免费人成电影在线观看四季 | 亚洲欧美在线观看| aaa亚洲精品| 亚洲欧洲精品一区二区精品久久久| 成人黄色大片在线观看| 国产欧美视频在线观看| 成人av资源网站| 亚洲激情图片一区| 欧美日韩国产高清一区二区| 天天射综合影视| 欧美一区二区三区四区在线观看| 蜜臀av一区二区在线观看 | 一区二区三区中文字幕精品精品| 91视频在线看| 亚洲国产视频一区二区| 91精品在线免费| 国产最新精品免费| 国产精品美女久久久久久2018| 99视频热这里只有精品免费| 一区二区在线看| 日韩精品中午字幕| 成人亚洲一区二区一| 一区二区在线观看免费| 日韩欧美在线123| 国产91在线观看丝袜| 亚洲一线二线三线视频| 精品国产乱码91久久久久久网站| 成人av网站在线观看免费| 亚洲国产wwwccc36天堂| 精品国精品国产尤物美女| 成人av资源在线| 丝袜脚交一区二区| 国产婷婷色一区二区三区| 在线观看日韩精品| 久久国产婷婷国产香蕉| 国产精品国产三级国产有无不卡| 欧美性三三影院| 狠狠色综合日日| 亚洲激情av在线| 欧美精品一区二区三区一线天视频| 成人白浆超碰人人人人| 性久久久久久久久久久久| 欧美国产一区在线| 欧美人与禽zozo性伦| 成人综合婷婷国产精品久久蜜臀| 亚洲成人av资源| 自拍视频在线观看一区二区| 精品国产污污免费网站入口 | 亚洲精品成人精品456| 精品国产伦一区二区三区观看方式| av激情成人网| 国产乱对白刺激视频不卡| 午夜a成v人精品| 中文字幕视频一区二区三区久| 日韩一级完整毛片| 日本高清免费不卡视频| 国产91对白在线观看九色| 美女视频一区在线观看| 一区二区欧美国产| 中文字幕在线观看不卡视频| 日韩一级免费观看|