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

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

?? icmplib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* icmpLib.c - VxWorks library for ICMP routines *//* Copyright 1984 - 2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01q,29jan02,vvv  fixed icmpMaskGet to use unfreed mblk when retransmitting		 (SPR #72867)01p,15oct01,rae  merge from truestack ver 01t, base 01o (no ether hooks)01o,17mar99,spm  added support for identical unit numbers (SPR #20913)01n,17nov98,n_s  fixed icmpMaskGet for non-END devices. spr 23005.01m,08dec97,gnn  END code review fixes.01l,05oct97,vin  added header file ip_var.h01k,03oct97,gnn  removed necessity for endDriver global01j,25sep97,gnn  SENS beta feedback fixes01i,12aug97,gnn  changes necessitated by MUX/END update.01h,20jan97,vin  added icmpLibInit for scaling.01g,17dec96,gnn  added code to handle the new etherHooks and END stuff.01f,05aug94,dzb  set IP address of interface in arpcom struct (SPR #2706).01e,30jun92,jmm  moved checksum() to vxLib01d,11jun92,elh	 changed parameters to ipHeaderCreate.01c,26may92,rrr  the tree shuffle		  -changed includes to have absolute path from h/01b,16apr92,elh	 moved routines shared by bootpLib here.01a,11mar91,elh	 written.*//*DESCRIPTIONicmpLib contains routines that use ICMP.  icmpMaskGet is currently the only routine in this library.  icmpMaskGet generates and sends an ICMP addressmask request to obtain the subnet mask of the network.The routine icmpLibInit() is responsible for configuring the ICMP protocolwith various parameters.To use this feature, include the following component:INCLUDE_ICMP*//* includes */#include "vxWorks.h"#include "net/protosw.h"#include "net/domain.h"#include "netinet/in.h"#include "netinet/in_systm.h"#include "netinet/in_pcb.h"#include "netinet/ip_var.h"#include "netinet/ip.h"#include "netinet/ip_icmp.h"#include "netLib.h"#include "errno.h"#include "icmpLib.h"#include "sysLib.h"#include "string.h"#include "taskLib.h"#include "stdio.h"#include "tickLib.h"#include "inetLib.h"#include "vxLib.h"#include "end.h"#include "ipProto.h"#include "muxLib.h"#include "muxTkLib.h"#include "private/muxLibP.h"#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#endif/* externs */#ifndef VIRTUAL_STACKIMPORT int		_protoSwIndex;IMPORT struct protosw 	inetsw [IP_PROTO_NUM_MAX]; IMPORT int		icmpmaskrepl;#endif/* defines */#define ICMP_REXMT_DELAY	1	/* retransmit delay (secs) */#define ICMP_MAX_SEND		2	/* maximum requests *//* locals */#ifndef VIRTUAL_STACKLOCAL	BOOL	      maskReplyReceived = FALSE; /* recv mask reply 	*/LOCAL	int	      icmpMask = 0;		/* replied icmp mask    */LOCAL struct    {    struct ip	ih;				/* IP header		*/    struct icmp	icmph;				/* ICMP header		*/    } icmpMsg;#endifLOCAL BOOL icmpMaskEndInput (void * pCookie, long type, M_BLK_ID pBuff,			     LL_HDR_INFO * pLinkHdrInfo, void * pSpare);LOCAL BOOL icmpMaskNptInput (void * callbackId ,long type, M_BLK_ID pBuff,			     void * pSpareData);/* forward declarations */IMPORT int in_broadcast ();/****************************************************************************** * * icmpLibInit - initialize icmpLib  * * This routine initializes icmpLib. * * RETURNS: OK if successful, otherwise ERROR. * * NOMANUAL */STATUS icmpLibInit     (    ICMP_CFG_PARAMS * 	icmpCfg		/* icmp configuration parameters */    )    {    FAST struct protosw	* pProtoSwitch;     if (_protoSwIndex >= sizeof(inetsw)/sizeof(inetsw[0]))	return (ERROR) ;    pProtoSwitch = &inetsw [_protoSwIndex];     if (pProtoSwitch->pr_domain != NULL)	return (OK); 				/* already initialized */    pProtoSwitch->pr_type   	=  SOCK_RAW;    pProtoSwitch->pr_domain   	=  &inetdomain;    pProtoSwitch->pr_protocol   =  IPPROTO_ICMP;    pProtoSwitch->pr_flags	=  PR_ATOMIC | PR_ADDR;    pProtoSwitch->pr_input	=  icmp_input;    pProtoSwitch->pr_output	=  rip_output;    pProtoSwitch->pr_ctlinput	=  0;    pProtoSwitch->pr_ctloutput	=  rip_ctloutput;    pProtoSwitch->pr_usrreq	=  rip_usrreq;    pProtoSwitch->pr_init	=  icmp_init;    pProtoSwitch->pr_fasttimo	=  0;    pProtoSwitch->pr_slowtimo	=  0;    pProtoSwitch->pr_drain	=  0;    pProtoSwitch->pr_sysctl	=  0;    _protoSwIndex++;     /* initialize icmp configuration parameters */    icmpmaskrepl = (icmpCfg->icmpCfgFlags & ICMP_DO_MASK_REPLY) ? TRUE : FALSE;    return (OK);     }/******************************************************************************** icmpMaskGet - obtain the subnet mask ** icmpMask broadcasts an ICMP Address Mask Request over the network* interface specified by <ifName> to obtain the subnet mask of that* network.* This interface must have been previously attached and initialized.** <src> specifies the source IP address, which must be set.** <dst> specifies destination of ICMP request.  A NULL value for* <dst> results in the request being broadcasted.  However, because* ICMP mask request/reply behaves differently on each ICMP* implementation, thus the ICMP mask reply by broadcasting ICMP mask* request is not guranteed.** The subnet mask gets returned in <pSubnet> in host byte order.** NOTE: This routine can be used for END or NPT driver only.** RETURNS: OK if successful, otherwise ERROR.** ERRNO*   S_icmpLib_NO_BROADCAST*   S_icmpLib_INVALID_INTERFACE*   S_icmpLib_TIMEOUT**/STATUS icmpMaskGet    (    char *		ifName,		/* network interface name */    char * 		src,		/* optional src address */    char *		dst,		/* optional dst address */    int	 *		pSubnet		/* return subnet mask 	*/    )    {    FAST int 		retransmitSecs;	/* retransmit time 	*/    FAST int		tickCount;    int			ix;		/* index 		*/    struct in_addr	srcAddr;	/* source address 	*/    struct sockaddr_in	dstAddr;	/* destination address	*/    struct ifnet *	pIf;		/* pointer to interface */    IP_DRV_CTRL *	pDrvCtrl;    struct mbuf *	pMbuf;    void *		pCookie = NULL;    FUNCPTR		pBoundRtn = NULL;    int 		level;    int 		result;    /* reset flags */    maskReplyReceived = FALSE;    icmpMask = 0;    /* verify arguments and the I/F if attached END/NPT */    if (pSubnet == NULL                                      ||        (pIf = ifunit (ifName)) == NULL                      ||	pIf->if_output == NULL                               ||	(endFindByName (pIf->if_name, pIf->if_unit)) == NULL ||	(pDrvCtrl = (IP_DRV_CTRL *)pIf->pCookie) == NULL)	{	errno = S_icmpLib_INVALID_INTERFACE;	goto icmpMaskGetError;	}    /* build IP address */    if (src == NULL)        {        errno = S_icmpLib_INVALID_ARGUMENT;	goto icmpMaskGetError;        }    /* bind IP address to ac */    srcAddr.s_addr = inet_addr (src);    ((struct arpcom *) pIf)->ac_ipaddr.s_addr = srcAddr.s_addr;    bzero ((char *)&dstAddr, sizeof (struct sockaddr_in));    if (dst == NULL)	{        if ((pIf->if_flags & IFF_BROADCAST) == 0)	    {	    errno = S_icmpLib_NO_BROADCAST;	/* no broadcasts */	    goto icmpMaskGetError;	    }	dstAddr.sin_addr.s_addr = htonl (INADDR_BROADCAST);	}    else	dstAddr.sin_addr.s_addr = inet_addr (dst);    dstAddr.sin_len = sizeof (struct sockaddr_in);    dstAddr.sin_family = AF_INET;    pIf->if_flags |= (IFF_UP | IFF_RUNNING);    retransmitSecs	= ICMP_REXMT_DELAY; 	/* set delay value */    maskReplyReceived	= FALSE;    /* fill in ICMP message and put it in an mbuf */    bzero ((char *) &icmpMsg, sizeof (icmpMsg));    icmpMsg.icmph.icmp_type  = ICMP_MASKREQ;    icmpMsg.icmph.icmp_code  = 0;    icmpMsg.icmph.icmp_cksum = 0;    icmpMsg.icmph.icmp_cksum = checksum ((u_short *) &icmpMsg.icmph, 					 ICMP_MASKLEN);    ipHeaderCreate (IPPROTO_ICMP, &srcAddr, &dstAddr.sin_addr,		    &icmpMsg.ih, sizeof (struct ip) + ICMP_MASKLEN);    /* bind icmpMaskHook as SNARF */    if (muxTkDrvCheck (pIf->if_name))	{	pCookie = muxTkBind (pIf->if_name, pIf->if_unit,			     (FUNCPTR)icmpMaskNptInput, NULL, NULL, NULL,			     MUX_PROTO_SNARF, "ICMP HOOK NPT",			     pDrvCtrl, NULL, NULL);	pBoundRtn = (FUNCPTR) icmpMaskNptInput;	}    else	{	pCookie = muxBind (pIf->if_name, pIf->if_unit,			   (FUNCPTR)icmpMaskEndInput, NULL, NULL, NULL,			   MUX_PROTO_SNARF, "ICMP HOOK END",			   pDrvCtrl);	pBoundRtn = (FUNCPTR) icmpMaskEndInput;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久草中文综合在线| 免费在线观看不卡| 91精品国产一区二区三区| 久久不见久久见免费视频1| 欧美激情一区二区三区四区| 欧美中文字幕一区| 国产美女主播视频一区| 午夜精品久久久久久久| 亚洲欧美综合在线精品| 日韩欧美一级片| 91久久免费观看| 国产精品一区二区三区网站| 天堂在线一区二区| 中文字幕中文乱码欧美一区二区| 日韩一区二区免费在线电影| 色哟哟亚洲精品| 成人夜色视频网站在线观看| 日韩不卡一区二区三区| 亚洲激情欧美激情| 国产精品久久久久影院色老大| 欧美一区二区三级| 欧美亚男人的天堂| 色哟哟国产精品免费观看| 国产很黄免费观看久久| 男男视频亚洲欧美| 午夜久久电影网| 亚洲免费观看高清完整| 国产精品国产三级国产三级人妇| 精品久久久久久久久久久久久久久 | 日本午夜一区二区| 亚洲一区二区av在线| 综合激情网...| 国产精品久久久一本精品 | 亚洲国产精品精华液2区45| 91精品黄色片免费大全| 欧美日韩在线不卡| 欧美无人高清视频在线观看| 99精品国产热久久91蜜凸| caoporm超碰国产精品| 岛国一区二区三区| 国产不卡免费视频| 成人国产一区二区三区精品| 国产馆精品极品| 成人黄色777网| 91色婷婷久久久久合中文| 不卡在线观看av| 97精品超碰一区二区三区| 色综合久久九月婷婷色综合| 99久久精品国产观看| 99国内精品久久| 91美女在线观看| 欧美伊人精品成人久久综合97| 欧美午夜影院一区| 制服丝袜亚洲播放| 日韩精品自拍偷拍| 欧美激情一区在线| 亚洲美女在线国产| 亚洲国产精品精华液网站| 日韩和欧美的一区| 久草在线在线精品观看| 国产伦精一区二区三区| 成人黄色av电影| 欧美在线一二三四区| 欧美丰满少妇xxxbbb| 精品国产不卡一区二区三区| 国产日韩欧美综合在线| 亚洲精品中文在线影院| 亚洲h在线观看| 麻豆精品在线播放| 波多野结衣欧美| 欧美日韩在线一区二区| 欧美v日韩v国产v| 国产日韩欧美不卡| 亚洲一区影音先锋| 久久电影国产免费久久电影| 国产成人精品免费网站| 色婷婷亚洲一区二区三区| 欧美久久久久久久久久| 久久无码av三级| 亚洲欧美色图小说| 久久99精品视频| 91免费观看在线| 日韩视频免费直播| 国产精品超碰97尤物18| 国产一区欧美二区| 91高清视频免费看| 26uuu成人网一区二区三区| 国产精品第五页| 日韩在线卡一卡二| 不卡的av电影在线观看| 91精品久久久久久蜜臀| 中文字幕一区在线观看| 蜜桃av噜噜一区| 在线中文字幕一区二区| 久久伊99综合婷婷久久伊| 一区二区三区国产精华| 国产在线不卡视频| 欧美精选午夜久久久乱码6080| 国产欧美一区二区精品性色 | 精彩视频一区二区三区| 在线精品视频免费观看| 国产亚洲综合性久久久影院| 一区二区免费看| 国产99久久久国产精品潘金网站| 欧美日韩免费电影| 最好看的中文字幕久久| 国产在线乱码一区二区三区| 欧美亚洲综合网| 1024成人网| 国产成人小视频| 欧美大白屁股肥臀xxxxxx| 亚洲一卡二卡三卡四卡| 成人看片黄a免费看在线| 欧美电影免费观看高清完整版在线观看 | 亚洲激情网站免费观看| 岛国一区二区在线观看| 精品久久久久99| 日韩高清中文字幕一区| 99久久久无码国产精品| 国产亚洲成aⅴ人片在线观看| 日韩黄色片在线观看| 欧美亚洲综合在线| 一区二区三区高清不卡| 成人免费毛片app| 国产日韩精品一区二区浪潮av| 久久国产综合精品| 7777精品伊人久久久大香线蕉经典版下载| 成人欧美一区二区三区小说| 成人午夜视频福利| 国产日韩欧美激情| 国产91色综合久久免费分享| 久久久亚洲精品一区二区三区| 免费美女久久99| 欧美一区二区三区视频免费播放| 性做久久久久久免费观看欧美| 91久久线看在观草草青青| 亚洲欧美二区三区| 精品999久久久| 黄一区二区三区| 久久久天堂av| 国产成人日日夜夜| 国产精品视频免费看| 成人自拍视频在线观看| 国产精品成人一区二区三区夜夜夜| 国产精品一区二区果冻传媒| 久久午夜免费电影| 成人福利视频在线看| 亚洲欧洲成人精品av97| 色老综合老女人久久久| 亚洲综合成人网| 欧美喷潮久久久xxxxx| 蜜臀va亚洲va欧美va天堂| 久久久一区二区三区捆绑**| 国产精品1024久久| 中文字幕亚洲区| 欧美性欧美巨大黑白大战| 肉肉av福利一精品导航| 欧美mv日韩mv国产网站app| 国产激情一区二区三区| 中文字幕在线不卡国产视频| 日本精品视频一区二区| 婷婷中文字幕综合| 欧美精品一区二区三区在线播放| 国产精品资源网站| 综合中文字幕亚洲| 91精品国产一区二区三区蜜臀 | 欧美在线一区二区三区| 日韩电影网1区2区| 久久精品亚洲精品国产欧美kt∨ | 色综合天天在线| 午夜免费久久看| 国产夜色精品一区二区av| 色妹子一区二区| 免费看日韩a级影片| 国产三级一区二区三区| 色婷婷激情一区二区三区| 日本vs亚洲vs韩国一区三区 | 久久先锋资源网| 91久久久免费一区二区| 精品一区免费av| 日韩美女视频一区| 日韩亚洲欧美综合| av在线一区二区三区| 青青草精品视频| 中文字幕一区免费在线观看| 欧美久久久影院| 春色校园综合激情亚洲| 三级久久三级久久久| 日本午夜一区二区| 中文字幕日韩一区| 日韩你懂的在线播放| 色综合一区二区三区| 九九国产精品视频| 亚洲综合激情网| 国产三级精品视频| 日韩丝袜情趣美女图片| 欧美性受极品xxxx喷水| 成人网男人的天堂| 久久福利视频一区二区| 亚洲777理论|