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

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

?? rarplib.c

?? vxwork源代碼
?? C
字號(hào):
/* rarpLib.c - Reverse Address Resolution Protocol (RARP) client library *//* Copyright 1999 - 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 *//*modification history--------------------01i,17dec01,vvv  fixed doc build errors01h,05nov01,vvv  fixed compilation warnings01g,29mar01,spm  file creation: copied from version 01f of tor2_0.open_stack                 branch (wpwr VOB) for unified code base; fixed published                 routine name for coding conventions01f,29jun00,spm  updated to handle NPT version of MUX interface01e,11may00,brx  fixed error returns to set errno and return ERROR01d,11may00,ead  added calls to virtualStackIdCheck() in the various RARP                 commands01c,25apr00,spm  made virtual stack support optional (enabled by default)01b,18apr00,ead  modified to be multi-instance01a,28dec99,brx  created from RARP code found in if_ether.c*//*DESCRIPTIONThis library is an implementation of the Reverse Address Resolution Protocol.This protocol allows devices such as diskless workstations request an IP address at boot-time from a dedicated server on the local network.The routine rarpGet() broadcasts a RARP request on the local ethernet andreturns a response.  If a RARP server does not respond after the specifiedtimeout interval, rarpGet() returns with an error code set in errno. */#include "vxWorks.h"#include "stdio.h"#include "taskLib.h"#include "end.h"#include "muxLib.h"#include "ipProto.h"#include "sysLib.h"#include "logLib.h"#include "errnoLib.h"#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#endif /* VIRTUAL_STACK *//* defines */#define SAMPLE_RATE 6/* define ERROR codes */#define S_rarpLib_TIMEOUT           (M_rarpLib | 1)#define S_rarpLib_NETDOWN           (M_rarpLib | 2)#define S_rarpLib_INPROGRESS        (M_rarpLib | 3)#define S_rarpLib_NORESPONSE        (M_rarpLib | 4)/* typedefs *//* externs *//* locals */#ifndef VIRTUAL_STACKLOCAL SEM_ID	revarpInProgress = NULL;#endif /* VIRTUAL_STACK *//* revarp state */#ifndef VIRTUAL_STACKtypedef struct    {    BOOL		ipAddrInitialized;     struct in_addr 	ipAddr;    END_OBJ		*pEndId;    BOOL		rarpDebug;    } RARPSTATE;LOCAL RARPSTATE rarpState;#endif /* VIRTUAL_STACK *//* forward declarations */void rarpSetDebug( int );int rarpGet ( char *, int, struct in_addr *, int);		void rarpIn ( END_OBJ *, long, M_BLK_ID, LL_HDR_INFO *, IP_DRV_CTRL *);int revarpwhoami(struct in_addr *, struct ifnet *, int);void revarprequest(struct ifnet *);void in_revarpinput(struct ether_arp *);/******************************************************************************** rarpLibInit - Initialize rarp client** This routine links the RARP facility into the VxWorks system.* These routines are included automatically if INCLUDE_RARP is defined.* ** Returns: N/A**/STATUS rarpLibInit(void)    {#ifndef VIRTUAL_STACK    if (revarpInProgress == NULL){#endif /* VIRTUAL_STACK */        revarpInProgress = semBCreate(SEM_Q_PRIORITY, SEM_FULL);        if (revarpInProgress == NULL)    	    return ERROR;        return OK;#ifndef VIRTUAL_STACK    }    else        return OK;#endif /* VIRTUAL_STACK */#ifdef VIRTUAL_STACK    rarpState.ipAddrInitialized = FALSE;    rarpState.ipAddr.s_addr = 0;    rarpState.pEndId = 0;    rarpState.rarpDebug = FALSE;    return OK;#endif /* VIRTUAL_STACK */    }/******************************************************************************** rarpDebugSet - Set the debug facility in RARP** This routine sets the RARP debug facility.  If the argument is non-zero, * debug messages will be sent to the logging task.  If the argument is zero* RARP operates quietly.  Default is quiet operation.** Returns: N/A**/void rarpDebugSet    (    int flag    )    {#ifdef VIRTUAL_STACK    virtualStackIdCheck();#endif /* VIRTUAL_STACK */    logMsg("Setting rarpDebug to %d\n", flag, 0, 0, 0, 0, 0);    rarpState.rarpDebug = (flag != 0) ? TRUE : FALSE;    }/********************************************************************************* rarpGet - broadcast a RARP packet and wait for a reply** rarpGet() maps ethernet hardware addresses to IP protocol addresses.* This routine generates an ethertype 0x8035 packet and * broadcasts it on the device local network.  If a RARP server is on the * network, it replies with an IP address that corresponds to the device * hardware address. ** .IP <IFname>* Expects a pointer to the character string which contains the name of the * interface.* .IP <IFunit>* Expects a number which is the unit of the device named in IFname.* .IP <Addr> * Expects a pointer to a struct in_addr. The IP address of the device will* be placed in this buffer after it is received from the RARP server.* .IP <Tmo>* Expects an integer for timeout value in seconds.** Returns: OK, S_rarpLib_NETDOWN if IFname is not a valid device, *          S_rarpLib_INPROGRESS if another RARP request is in progress, *          S_rarpLib_NORESPONSE if there is no response from a server.*/int rarpGet    (    char *IFname,     int IFunit,     struct in_addr *Addr,     int tmo    )    {    struct ifnet *pIf;    END_OBJ * pEnd;    void *pCookie;    int errorFlag = 0;    char cName[16];#ifdef VIRTUAL_STACK    virtualStackIdCheck();#endif /* VIRTUAL_STACK */    semTake(revarpInProgress, WAIT_FOREVER);    rarpState.ipAddrInitialized = FALSE;    rarpState.ipAddr.s_addr = 0;    pEnd = endFindByName (IFname, IFunit);    sprintf(cName,"%s%d", IFname, IFunit);    pIf = (struct ifnet *)ifunit(cName);    if (pIf == NULL || pEnd == NULL)         {	if (rarpState.rarpDebug)            logMsg ("RARP: Can't find interface %s!\n", (int)cName,                    0, 0, 0, 0, 0);	semGive(revarpInProgress);        errnoSet(S_rarpLib_NETDOWN);	return ERROR;        }    if ((pCookie = muxBind(IFname, IFunit, (FUNCPTR)rarpIn, NULL, 	NULL, NULL, 0x8035, "IP 4.4 RARP", NULL )) == NULL)        {	 if (rarpState.rarpDebug)              logMsg("RARP: Can't bind to MUX\n",0,0,0,0,0,0);	 semGive(revarpInProgress);         errnoSet(S_rarpLib_NETDOWN);	 return ERROR;        }    rarpState.pEndId = pEnd;    /* broadcast  RARP request, wait for answer */    errorFlag = revarpwhoami(Addr, pIf, tmo);     if( muxUnbind( pCookie, 0x8035, (FUNCPTR)rarpIn) != OK)	if (rarpState.rarpDebug)	    logMsg("RARP: Error in MUX unbind\n",0,0,0,0,0,0);    semGive(revarpInProgress);    if (errorFlag != 0)        {	if (rarpState.rarpDebug)	    logMsg("RARP: no response\n",0,0,0,0,0,0);        errnoSet(errorFlag);	return ERROR;	        }    else     return OK;    }/********************************************************************************* revarpwhoami - issues RARP request and waits for a reply from a server*** RETURNS: OK if the IP has been received, S_rarpLib_NORESPONSE if no*          response has been received before tmo seconds.*** NOMANUAL*/intrevarpwhoami    (    struct in_addr *pClientIn,    struct ifnet *pIfp,    int tmo    )    {    int count;	    if (rarpState.ipAddrInitialized)         return OK;    if (rarpState.rarpDebug)	logMsg("RARP: sending request\n",0,0,0,0,0,0);    revarprequest(pIfp);    for(count=0; count < SAMPLE_RATE*tmo; count++)        {        if (rarpState.ipAddrInitialized == FALSE)            taskDelay (sysClkRateGet()/SAMPLE_RATE);         else 	    {            bcopy((caddr_t)&rarpState.ipAddr, (char *)pClientIn, 		   sizeof(*pClientIn));            if (rarpState.rarpDebug)	        logMsg("RARP: received reply: 0x%x\n",		        (unsigned int)rarpState.ipAddr.s_addr, 0, 0, 0, 0, 0);            return OK;            }         }    /* no reply before time out */    if (rarpState.rarpDebug)        logMsg("RARP: did not receive reply after %d seconds\n",	        tmo, 0, 0, 0, 0, 0);    errnoSet(S_rarpLib_NORESPONSE);    return ERROR;    }   /********************************************************************************* revarprequest - form RARP ether packet and transmit** Send a RARP request for the ip address of the specified interface.** RETURNS: NA** NOMANUAL*/voidrevarprequest    (    struct ifnet *pIfp    )    {	struct sockaddr sa;	struct mbuf *pMbuf;	struct ether_header *eh;	struct ether_arp *ea;	struct arpcom *ac = (struct arpcom *)pIfp;	if ((pMbuf = mHdrClGet(M_DONTWAIT, MT_DATA, sizeof(*ea), TRUE)) == NULL)	    return; 	pMbuf->m_len = sizeof(*ea);	pMbuf->m_pkthdr.len = sizeof(*ea);	MH_ALIGN(pMbuf, sizeof(*ea));	ea = mtod(pMbuf, 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_REVARP; /* htons is done in ipOutput */	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_REVREQUEST);	bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->arp_sha,	   sizeof(ea->arp_sha));	bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->arp_tha,	   sizeof(ea->arp_tha));	sa.sa_family = AF_UNSPEC;	sa.sa_len = sizeof(sa);	pIfp->if_output(pIfp, pMbuf, &sa, (struct rtentry *)0);    }/********************************************************************************* rarpIn -  callback routine bound to MUX ** This routine is called by the mux when a packet is ready to be processed** RETURNS: N/A**/void rarpIn            (    END_OBJ *           pCookie,        /* Returned by muxBind() call. */    long                type,           /* Protocol type.  */    M_BLK_ID            m,          	/* The whole packet. */    LL_HDR_INFO *       pLinkHdrInfo,   /* pointer to linklevel header*/    IP_DRV_CTRL *       pDrvCtrl        /* ip Drv ctrl */    )    {    struct arphdr *pArphdr;    struct ether_arp *ea;    char   *pChar;    /* verify correct interface */    if (rarpState.pEndId != pCookie)        goto out;            /* if a previous reply has already answered, we're done */    if (rarpState.ipAddrInitialized)        goto out;    if (m->m_len < sizeof(struct arphdr))	goto out;    pChar = mtod(m, char *);    pArphdr = (struct arphdr *)(pChar + pLinkHdrInfo->dataOffset);    /* verify supported RARP values per RFC 903 */    ea = (struct ether_arp *)pArphdr;    if (ntohs(pArphdr->ar_hrd) != ARPHRD_ETHER)	goto out;    if (ntohs(pArphdr->ar_pro) != ETHERTYPE_IP)	goto out;    if (ntohs(ea->arp_op) != ARPOP_REVREPLY)	goto out;    if (m->m_len < sizeof(struct arphdr) +         2 * (pArphdr->ar_hln + pArphdr->ar_pln))	goto out;	/** copy address into global variable **/    bcopy((caddr_t)ea->arp_tpa, (caddr_t)&rarpState.ipAddr, 	   sizeof(rarpState.ipAddr));    rarpState.ipAddrInitialized = TRUE;    out:	m_freem(m);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清在线精品| www一区二区| 欧美国产日韩一二三区| 亚洲欧美日韩在线| 激情综合网av| 欧美色老头old∨ideo| 欧美日韩中文一区| 国产精品久久毛片av大全日韩| 香蕉av福利精品导航 | 亚洲综合色噜噜狠狠| 男男视频亚洲欧美| 亚洲一区二区三区爽爽爽爽爽| 成人性色生活片免费看爆迷你毛片| 欧美性视频一区二区三区| 国产精品欧美一区二区三区| 国产精品18久久久久久久网站| 欧美成人福利视频| 亚洲女子a中天字幕| 欧美成人一级视频| 无码av免费一区二区三区试看| 精品无人码麻豆乱码1区2区| 日韩av不卡在线观看| 精品国产一区久久| 久久影音资源网| 狠狠色丁香久久婷婷综合丁香| 91麻豆精品国产91久久久| 亚洲在线视频免费观看| 日本福利一区二区| 亚洲欧美日韩小说| 免费人成黄页网站在线一区二区| 久久日一线二线三线suv| 亚洲欧美日韩在线| 国产不卡在线一区| 日韩欧美中文字幕一区| 精品在线一区二区| xf在线a精品一区二区视频网站| 国产一区二区在线观看免费| 国产婷婷色一区二区三区在线| 国产精品99久久久久久有的能看| 久久久久久一级片| 国产精品一区二区不卡| 26uuu精品一区二区三区四区在线| 国产乱码一区二区三区| 国产欧美日韩在线视频| 成人短视频下载| 国产精品性做久久久久久| 日韩三级在线免费观看| 国产精品一区二区无线| 国产精品毛片高清在线完整版| 成人激情免费网站| 一区二区三区国产豹纹内裤在线| 欧美视频在线观看一区二区| 日韩av中文在线观看| 久久精品一区八戒影视| 成人av在线观| 天天综合天天做天天综合| 日韩午夜激情av| 国产精品美女久久久久aⅴ| 欧美性生活大片视频| 日韩avvvv在线播放| 亚洲精品在线一区二区| 国产在线一区观看| 中文字幕在线播放不卡一区| 欧美日韩一区高清| 国产一区二区三区久久悠悠色av| 国产精品久久久久一区二区三区 | 91论坛在线播放| 亚洲永久精品大片| 久久久久青草大香线综合精品| 色综合久久久久综合| 蜜桃视频免费观看一区| 国产精品美女久久久久久2018| 欧美日韩一区国产| 国内精品伊人久久久久av一坑| 欧美巨大另类极品videosbest | 日韩一级片网站| 成人av在线资源网站| 日韩av午夜在线观看| 久久久高清一区二区三区| 国内精品嫩模私拍在线| 一区二区三区小说| 久久精品一区八戒影视| 日韩一区二区三区四区五区六区| av不卡在线播放| 久久精品国产精品亚洲综合| 亚洲精品ww久久久久久p站| 久久精品在线观看| 欧美日精品一区视频| 韩日av一区二区| 亚洲国产视频a| 国产欧美视频一区二区三区| 日韩欧美在线综合网| 在线视频国内自拍亚洲视频| 国产一区二区影院| 日韩不卡免费视频| 亚洲二区在线视频| 亚洲图片另类小说| 欧美亚洲国产一区在线观看网站| 国产偷v国产偷v亚洲高清| 日韩视频免费直播| 欧美亚洲高清一区| 成人免费看视频| 国产综合久久久久久久久久久久| 丝袜脚交一区二区| 一区二区三区精品视频| 欧美日韩亚洲综合在线| 亚洲综合清纯丝袜自拍| 国产欧美日韩视频在线观看| 欧美白人最猛性xxxxx69交| 91精品婷婷国产综合久久性色| 欧美综合欧美视频| 色美美综合视频| 91免费视频网| 欧美一区二区黄| 色先锋资源久久综合| 成人不卡免费av| 99精品视频一区二区| 精品一区二区免费在线观看| 丝袜亚洲另类欧美综合| 亚洲成人免费电影| 亚洲美女屁股眼交3| 国产一区二区剧情av在线| 美日韩一区二区三区| 欧美区在线观看| 欧美精品在线一区二区| 日韩欧美一级特黄在线播放| 日本一区二区免费在线| 视频一区中文字幕| 国产精品99精品久久免费| 成人av网址在线| 日韩欧美中文一区二区| 亚洲精品视频一区二区| 国产成人精品影院| 欧美日本乱大交xxxxx| jlzzjlzz亚洲女人18| 欧美乱妇23p| 亚洲色图欧美激情| 精品无人码麻豆乱码1区2区 | 成人一级片在线观看| 欧美日韩国产首页在线观看| 日本一区二区不卡视频| 日韩av不卡在线观看| 色天使色偷偷av一区二区| 成人午夜精品在线| 日韩精品专区在线影院重磅| 悠悠色在线精品| 不卡视频一二三| 精品国内片67194| 丝袜美腿一区二区三区| 一本久久a久久精品亚洲| 国产欧美日韩在线观看| 国产一区欧美一区| 91精品麻豆日日躁夜夜躁| 一区二区三区在线视频观看| 懂色av一区二区夜夜嗨| 精品国产一区二区三区久久影院| 午夜视频久久久久久| 欧美日韩在线不卡| 亚洲自拍偷拍麻豆| 色婷婷久久久综合中文字幕| 中文字幕一区二区三区在线播放| 国产高清成人在线| 久久夜色精品一区| 韩国一区二区三区| 精品国产伦一区二区三区免费 | 毛片av一区二区三区| 欧美理论在线播放| 亚洲高清在线视频| 色综合久久久网| 亚洲美女在线国产| av在线不卡观看免费观看| 国产精品乱人伦| 成人av资源下载| 亚洲日本丝袜连裤袜办公室| 成人h动漫精品| 亚洲欧美日韩电影| 91高清视频免费看| 亚洲大型综合色站| 欧美年轻男男videosbes| 日本欧美一区二区| 日韩欧美一级精品久久| 国内久久精品视频| 欧美高清一级片在线观看| 国产一区不卡精品| 国产精品国产三级国产有无不卡| www.日本不卡| 亚洲成av人**亚洲成av**| 欧美日韩一级片在线观看| 蜜桃视频在线观看一区二区| 26uuu国产电影一区二区| 成人av在线网站| 亚洲综合一区二区| 日韩视频在线一区二区| 国产精品99久久不卡二区| 最新热久久免费视频| 日本大香伊一区二区三区| 日韩电影在线观看网站| 久久久久久久av麻豆果冻| av电影在线观看一区| 亚洲超碰精品一区二区|