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

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

?? proxylib.c

?? vxworks的完整的源代碼
?? C
字號:
/* proxyLib.c - proxy Address Resolution Protocol (ARP) client library *//* Copyright 1984 - 2001 Wind River Systems, Inc. *//*modification history--------------------01k,10may02,kbw  making man page edits01j,15oct01,rae  merge from truestack ver 01k, base 01f (no ether hooks)01i,07feb01,spm  added merge record for 30jan01 update from version 01g of                 tor2_0_x branch (base 01f) and fixed modification history01h,30jan01,ijm  corrected parameters for etherInputHookDelete01g,30jan01,ijm  merged SPR #28602 fixes: proxy ARP services are obsolete01f,26aug97,spm  removed compiler warnings (SPR #7866)01e,11aug93,jmm  Changed ioctl.h and socket.h to sys/ioctl.h and sys/socket.h01d,22sep92,jdi  documentation cleanup.01c,15jun92,elh  changed parameters to proxyReg & proxyUnreg,		 renamed to proxyLib, general cleanup.01b,26may92,rrr  the tree shuffle		  -changed includes to have absolute path from h/01a,20sep91,elh	  written.*//*DESCRIPTIONThis library implements the client side of the proxy Address ResolutionProtocol (ARP).  It allows a VxWorks target to register itself as a proxyclient by calling proxyReg() and to unregister itself by callingproxyUnreg().Both commands take an interface name and an IP address as arguments.  The interface, <ifName>, specifies the interface through which to send themessage.  <ifName> must be a backplane interface.  <proxyAddr> is theIP address associated with the interface <ifName>.To use this feature, include INCLUDE_PROXY_CLIENT.INCLUDE FILES: proxyArpLib.hSEE ALSO: proxyArpLibINTERNALThis registration process is pretty simple.  Basically the client broadcastsa PROXY_MSG message on the proxy network.  The client retries sendingthe message until it either times out or it receives an ACK from the server.There are currently three types of messages: PROXY_REG, to add the clientas a proxy client, PROXY_UNREG to delete the client as a proxy client,and a PROXY_PROBE message, to probe the server.    proxyReg 	proxyUnreg			v	|	  |		 proxyAckEndRecv/proxyAckNptRecv	v	  v                             |                             proxyMsgSend                               v                                           proxyAckCheck*//* includes */#include "vxWorks.h"#include "proxyArpLib.h"#include "netinet/in.h"#include "sys/socket.h"#include "net/if_arp.h"#include "net/if.h"#include "netinet/if_ether.h"#include "errno.h"#include "arpLib.h"#include "stdio.h"#include "string.h"#include "sysLib.h"#include "inetLib.h"#include "muxLib.h"#include "taskLib.h"#include "muxLib.h"#include "muxTkLib.h"#include "ipProto.h"/* globals */int			proxyXmitMax 	 = XMIT_MAX;	/* max rexmits      */int			proxyVerbose     = FALSE;	/* debug messages   *//* locals */LOCAL BOOL		proxyAckReceived = FALSE;	/* got ack	    */LOCAL PROXY_MSG 	proxyMsg;			/* proxy message    *//* forward declarations */STATUS proxyMsgSend (char * ifName, char * proxyAddr, int op);LOCAL BOOL proxyAckCheck (M_BLK_ID pMblk);LOCAL BOOL proxyAckEndRecv (void * pCookie, long type, M_BLK_ID pBuff,			    LL_HDR_INFO * pLinkHdrInfo, void * pSpare);LOCAL BOOL proxyAckNptRecv (void * callbackId ,long type, M_BLK_ID pBuff,			    void * pSpareData);/* imports */IMPORT struct ifnet * ifunit ();/********************************************************************************* proxyReg - register a proxy client** This routine sends a message over the network interface <ifName> to register* <proxyAddr> as a proxy client. ** RETURNS: OK, or ERROR if unsuccessful.*/STATUS proxyReg    (    char *			ifName,		/* interface name */    char *  			proxyAddr	/* proxy address  */    )    {    if (ifName == NULL || proxyAddr == NULL)	{	errno = S_proxyArpLib_INVALID_PARAMETER;		return (ERROR);	}    if (proxyMsgSend (ifName, proxyAddr, PROXY_REG) == ERROR)	return (ERROR);    arpFlush ();    return (OK);    }/********************************************************************************* proxyUnreg - unregister a proxy client** This routine sends a  message over the network interface <ifName> to* unregister <proxyAddr> as a proxy client.** RETURNS: OK, or ERROR if unsuccessful.*/STATUS proxyUnreg    (    char *			ifName,		/* interface name */    char * 			proxyAddr	/* proxy address  */    )    {    if (ifName == NULL || proxyAddr == NULL)	{	errno = S_proxyArpLib_INVALID_PARAMETER;	return (ERROR);	}    if (proxyMsgSend (ifName, proxyAddr, PROXY_UNREG) == ERROR)	return (ERROR);    arpFlush ();    return (OK);    }/********************************************************************************* proxyMsgSend - send a proxy message** This routine creates a proxy message with operation type <op>. It then* broadcasts this message over the proxy interface identified by <proxyAddr>.** NOMANUAL** RETURNS: OK, or ERROR if unsuccessful.** ERRNO*   S_proxyArpLib_INVALID_PARAMETER*   S_proxyArpLib_INVALID_INTERFACE*   S_proxyArpLib_INVALID_ADDRESS*   S_proxyArpLib_TIMEOUT** INTERNAL* This routine is global but no manual because it is useful for debugging* purposes.*/STATUS proxyMsgSend    (    char *			ifName,		/* interface name */    char * 			proxyAddr,	/* proxy interface addr */    int				op 		/* operation		*/    )    {    struct ether_header 	eh; 		/* ethernet header	*/    int				ix;		/* index variable	*/    int				delay;		/* xmit delay value 	*/    struct ifnet *		pIf;    struct mbuf *		pMbuf;    struct sockaddr		dst;    IP_DRV_CTRL *		pDrvCtrl;    void *			pCookie;    FUNCPTR			pBoundRtn = NULL;    int 			level;    int 			result;    if (op < PROXY_PROBE || op >= PROXY_ACK)	{	errno = S_proxyArpLib_INVALID_PARAMETER;	return (ERROR);				/* invalid op */	}    if ((pIf = ifunit (ifName)) == NULL      ||	(pIf->if_output == NULL)             ||	(pIf->if_flags & IFF_BROADCAST) == 0 ||	(pDrvCtrl = (IP_DRV_CTRL *)pIf->pCookie) == NULL)	{	errno = S_proxyArpLib_INVALID_INTERFACE;	return (ERROR);                 	/* interface not attached */	}    /* fill in proxy message */    bzero ((caddr_t ) &proxyMsg, sizeof (proxyMsg));    proxyMsg.op = htonl (op);    if ((proxyMsg.clientAddr.s_addr = inet_addr (proxyAddr)) == ERROR)	{	errno = S_proxyArpLib_INVALID_ADDRESS;	return (ERROR);	}    bcopy ((caddr_t) ((struct arpcom *)pIf)->ac_enaddr,	   (caddr_t) proxyMsg.clientHwAddr, sizeof (proxyMsg.clientHwAddr));    /* fill in ethernet header */    bzero ((caddr_t) &eh, sizeof (eh));    eh.ether_type = PROXY_TYPE;		/* htons is done in ipOutput */    bcopy ((char *) etherbroadcastaddr, (char *) eh.ether_dhost,	   sizeof (etherbroadcastaddr));    proxyAckReceived = FALSE;    bzero ((caddr_t)&dst, sizeof (dst));    dst.sa_len = sizeof (dst);    dst.sa_family = AF_UNSPEC;    bcopy((caddr_t)&eh, (caddr_t)&dst.sa_data, sizeof(eh));    /* bind proxyAckInput as SNARF */    if (muxTkDrvCheck (pIf->if_name))	{	pCookie = muxTkBind (pIf->if_name, pIf->if_unit,			     (FUNCPTR)proxyAckNptRecv, NULL, NULL, NULL,			     MUX_PROTO_SNARF, "PROXY ACK NPT",			     pDrvCtrl, NULL, NULL);	pBoundRtn = (FUNCPTR)proxyAckNptRecv;	}    else	{	pCookie = muxBind (pIf->if_name, pIf->if_unit,			   (FUNCPTR)proxyAckEndRecv, NULL, NULL, NULL,			   MUX_PROTO_SNARF, "PROXY ACK END",			   pDrvCtrl);	pBoundRtn = (FUNCPTR)proxyAckEndRecv;	}    if (proxyVerbose)    	printf ("sending <%d> client %s\n", op, proxyAddr);    for (ix = 0; ix < proxyXmitMax; ix++)        {	printf (".");        /* form an ARP packet */        if ((pMbuf = bcopy_to_mbufs ((caddr_t)&proxyMsg, sizeof (PROXY_MSG),				 0, pIf, NONE)) == NULL)            return (ERROR);        level = splnet ();	        result = pIf->if_output (pIf, pMbuf, &dst, NULL);        splx (level);	if (result)	    break;	delay = sysClkRateGet () * XMIT_DELAY;		/* rexmit delay */	while (delay-- > 0)	    {	    if (proxyAckReceived)		{		muxUnbind (pCookie, MUX_PROTO_SNARF, pBoundRtn);		return (OK);		}	    taskDelay (1);	    }	}    if (ix == proxyXmitMax)       errno = S_proxyArpLib_TIMEOUT;    muxUnbind (pCookie, MUX_PROTO_SNARF, pBoundRtn);    return (ERROR);    }/********************************************************************************* proxyAckCheck - check proxy ack* * This routine checks given link frame if it is an expected proxy arp ACK.* If it is the case, this routine consumed the pMblk and frees it.** RETURNS:TRUE if received an expected arp ACK, or FALSE*/LOCAL BOOL proxyAckCheck    (    M_BLK_ID	pMblk				/* incoming link frame */    )    {    struct ether_header *  eh;           	/* ethernet header      */    PROXY_MSG *		   pMsg;		/* pointer to message	*/    char		   inputBuffer [2176];  /* frame buffer 	*/    UINT	           length;		/* packet length	*/    /* check proxy message type in ethernet header */    eh = (struct ether_header *)pMblk->mBlkHdr.mData;    length = pMblk->mBlkHdr.mLen;    if (length <= SIZEOF_ETHERHEADER ||	(ntohs (eh->ether_type)) != PROXY_TYPE)        return (FALSE);    /* get proxy arp message */         bzero (inputBuffer, sizeof (inputBuffer));    bcopyBytes ((caddr_t)((u_char *)pMblk->mBlkHdr.mData + SIZEOF_ETHERHEADER),                inputBuffer, length - SIZEOF_ETHERHEADER);    pMsg = (PROXY_MSG *)inputBuffer;    /*  check to make sure I sent out the original message  */    if ((ntohl (pMsg->op) == PROXY_ACK) &&        (pMsg->clientAddr.s_addr == proxyMsg.clientAddr.s_addr) &&        (bcmp ((caddr_t) pMsg->clientHwAddr, (caddr_t) proxyMsg.clientHwAddr,               sizeof (pMsg->clientHwAddr)) == 0))        {        proxyAckReceived = TRUE;        netMblkClChainFree (pMblk);        return (TRUE);        }    return (FALSE);    }/********************************************************************************* proxyAckEndRecv - End version of a proxy ACK receive routine** This module is the SNARF input routine used to receive the ACK* for a previous operation sent to the proxy server via proxyMsgSend.** RETURNS: See proxyAckCheck().*/LOCAL BOOL proxyAckEndRecv    (    void *              pCookie,        /* device identifier from driver */    long                type,           /* Protocol type.  */    M_BLK_ID            pMblk,          /* The whole packet. */    LL_HDR_INFO *       pLinkHdrInfo,   /* pointer to link level header info */    void *              pSpare          /* pointer to IP_DRV_CTRL */    )    {    /* already got a reply, or unknown device */    if (proxyAckReceived || pMblk == NULL)	return (FALSE);    return (proxyAckCheck (pMblk));    }/********************************************************************************* proxyAckNptRecv - NPT version of a proxy ACK receive routine** This module is the SNARF input routine used to receive the ACK* for a previous operation sent to the proxy server via proxyMsgSend.** RETURNS: See proxyAckCheck().*/LOCAL BOOL proxyAckNptRecv    (    void *    ipCallbackId,  /* Sent down in muxTkBind call. */    long      type,          /* Protocol type.  */    M_BLK_ID  pMblk,         /* The whole packet. */    void *    pSpareData     /* out of band data */    )    {    if (proxyAckReceived || pMblk == NULL)        return (FALSE);    return (proxyAckCheck (pMblk));    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av电影免费观看高清完整版 | 99久久伊人精品| 欧美大度的电影原声| 精品在线免费观看| 国产色91在线| 95精品视频在线| 亚洲一区二区三区四区不卡| 欧美精品亚洲二区| 久草精品在线观看| 国产日本欧洲亚洲| 91色在线porny| 亚洲国产色一区| 日韩一区二区电影在线| 国产综合久久久久久鬼色| 国产日产欧产精品推荐色 | 国产一级精品在线| 国产精品久久久一本精品| 91色porny| 日本欧美久久久久免费播放网| 欧美一区二区日韩一区二区| 国产一区二区三区日韩| 成人欧美一区二区三区在线播放| 亚洲精品精品亚洲| 日韩视频在线你懂得| 日本大胆欧美人术艺术动态| 欧美视频一区二区三区在线观看 | 国产色产综合产在线视频| 99在线视频精品| 日韩国产精品久久久| 国产色综合久久| 欧美日韩国产综合久久 | 99国产精品久| 99久久综合精品| 免费在线欧美视频| 中文字幕中文字幕中文字幕亚洲无线 | 国产一区二区精品久久99 | 午夜电影一区二区三区| 久久久久久免费网| 欧美羞羞免费网站| 成人黄色在线视频| 免费在线观看不卡| 亚洲免费av网站| 国产亚洲成年网址在线观看| 欧美色大人视频| 不卡一区在线观看| 久久99日本精品| 亚洲电影第三页| 中文字幕精品—区二区四季| 欧美日韩一区三区| 91在线一区二区三区| 九色porny丨国产精品| 亚洲丰满少妇videoshd| 成人欧美一区二区三区视频网页| 精品久久久久久无| 欧美高清视频一二三区 | 久久机这里只有精品| 一区二区三区中文字幕精品精品| 26uuu精品一区二区三区四区在线| 欧洲精品中文字幕| www.成人网.com| 国产成人在线色| 久久99这里只有精品| 日本亚洲三级在线| 亚洲五码中文字幕| 一区二区三区在线视频免费| 国产精品天天看| 久久精品亚洲国产奇米99| 欧美一卡在线观看| 91麻豆精品久久久久蜜臀| 欧美日韩亚洲综合在线| 色欧美片视频在线观看在线视频| 国产不卡在线播放| 国产精品一二二区| 国产麻豆一精品一av一免费 | 在线观看中文字幕不卡| 99久久99久久久精品齐齐| 成人毛片老司机大片| 国产精品18久久久久| 国内成人免费视频| 国产在线精品一区在线观看麻豆| 久久99精品久久久久久国产越南| 美国欧美日韩国产在线播放| 日韩av中文字幕一区二区| 日本不卡一二三区黄网| 青青国产91久久久久久| 韩国女主播成人在线| 国模无码大尺度一区二区三区| 国产最新精品免费| 成人黄色软件下载| av福利精品导航| 色悠悠亚洲一区二区| 欧美三级视频在线观看| 91 com成人网| 欧美成人女星排行榜| 欧美白人最猛性xxxxx69交| 国产亚洲短视频| 亚洲精品伦理在线| 日本美女一区二区三区视频| 国产一区免费电影| 91在线云播放| 欧美顶级少妇做爰| 久久久久久亚洲综合影院红桃 | 91丨porny丨最新| 欧美亚洲日本一区| 91精品久久久久久久99蜜桃| 久久久www成人免费无遮挡大片| 国产日韩欧美制服另类| 日韩毛片视频在线看| 性欧美疯狂xxxxbbbb| 久久99久久精品欧美| 东方aⅴ免费观看久久av| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美日韩视频一区二区| 亚洲人成在线播放网站岛国| 亚洲高清中文字幕| 狠狠狠色丁香婷婷综合激情| 91蜜桃在线观看| 精品日本一线二线三线不卡| 亚洲欧美另类综合偷拍| 日本aⅴ免费视频一区二区三区| 国产成人午夜精品5599| 日本高清不卡视频| 精品久久一二三区| 亚洲国产毛片aaaaa无费看| 狠狠色丁香久久婷婷综合_中| 色妞www精品视频| 精品免费一区二区三区| 尤物视频一区二区| 国产一区二区三区日韩| 欧美剧情电影在线观看完整版免费励志电影| 精品欧美乱码久久久久久1区2区| 夜夜揉揉日日人人青青一国产精品| 韩日av一区二区| 欧美日韩在线播放一区| 中文在线资源观看网站视频免费不卡 | 日韩欧美亚洲另类制服综合在线| 亚洲欧美日韩在线| 国产一区二区三区| 欧美一区二区啪啪| 一区二区三区鲁丝不卡| 国产成人av影院| 欧美mv日韩mv亚洲| 亚洲欧美成aⅴ人在线观看| 日韩精品电影在线观看| 成人午夜视频在线观看| 欧美成人video| 欧美亚洲一区二区在线观看| 亚洲精品中文在线| 最新国产精品久久精品| 激情综合五月婷婷| 91精品国产综合久久精品麻豆 | 亚洲欧洲制服丝袜| 成人激情视频网站| 欧美一区二区三区免费观看视频| 中文字幕日韩一区二区| 高清免费成人av| 久久先锋影音av鲁色资源网| 免费欧美日韩国产三级电影| 国产欧美日韩三区| 激情综合色丁香一区二区| 欧美一级日韩不卡播放免费| 午夜电影一区二区| 欧美年轻男男videosbes| 亚洲综合一二区| 日本道在线观看一区二区| 中文字幕电影一区| 国产成人av电影在线播放| 久久蜜桃香蕉精品一区二区三区| 国产永久精品大片wwwapp| 国产亚洲视频系列| 韩国成人精品a∨在线观看| 久久久蜜臀国产一区二区| 国产精品一二三区在线| 亚洲国产精品99久久久久久久久| 国产成人免费xxxxxxxx| 国产精品国模大尺度视频| 99久久亚洲一区二区三区青草| 亚洲欧美在线高清| 在线免费不卡视频| 日韩专区中文字幕一区二区| 在线综合亚洲欧美在线视频| 精品一二三四在线| 久久久天堂av| 91麻豆免费看| 日韩电影在线观看一区| 精品久久久三级丝袜| 成人的网站免费观看| 亚洲综合在线第一页| 91精品综合久久久久久| 精品制服美女久久| 成人免费在线视频| 欧美日韩国产免费一区二区| 国产精品电影一区二区| 亚洲国产精品麻豆| 欧美一区二区三区在线电影 | xfplay精品久久| jvid福利写真一区二区三区| 亚洲五码中文字幕| 精品第一国产综合精品aⅴ| 亚洲欧洲无码一区二区三区|