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

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

?? wdbudpsocklib.c

?? vxworks的完整的源代碼
?? C
字號:
/* wdbUdpSockLib.c - WDB communication interface for UDP sockets *//* Copyright 1984-1994 Wind River Systems, Inc. *//*modification history--------------------01d,17mar98,jmb merge from HPSIM, jmb patch 20mar97, rtalloc fails if port                number is not zero in socket address.01c,27sep95,ms  put netif MTU in global variable (SPR #4645).01b,03jun95,ms	use new commIf structure (sendto/rvcfrom replaces read/write).01a,22dec94,ms  written.*//*DESCRIPTIONThe WDB agent communicates with the host using sendto/rcvfrom functionpointers contained in a WDB_COMM_IF structure.This library iniitalizes these functions to be callouts to the standardUDP socket routines.It supports only "interrupt" mode (meaning that packets arrive forthe agent asynchronously to this library). "Polled" mode is not supported,because the external mode agent requires that polling routines notmake any calls to the kernel (so simply doing non-blocking I/O is notenough). As a result, this communication library can only supporta task mode agent.During agent initialization (in the file target/src/config/usrWdb.c), thislibraries wdbUdpSockIfInit() routine is called to initializes a WDB_COMM_IFstructure. A pointer to this structure is then passed to the agent'swdbInstallCommIf().Note: This particular library is not required by the WDB target agent.Other communication libraries can be used instead simply by initializinga WDB_COMM_IF structure and installing it in the agent.*/#include "vxWorks.h"#include "stdio.h"#include "net/protosw.h"#include "sys/socket.h"#include "net/socketvar.h"#include "net/route.h"#include "net/if.h"#include "netinet/in_systm.h"#include "netinet/in.h"#include "netinet/ip.h"#include "netinet/udp.h"#include "arpa/inet.h"#include "sockLib.h"#include "string.h"#include "selectLib.h"#include "ioLib.h"#include "pipeDrv.h"#include "netLib.h"#include "intLib.h"#include "iv.h"#include "wdb/wdb.h"#include "wdb/wdbSvcLib.h"#include "wdb/wdbCommIfLib.h"#include "wdb/wdbLibP.h"/* external functions */extern void rtalloc();extern void rtfree();/* static variables */static int	wdbUdpSock;		/* for the agent to read from */static int	wdbUdpCancelSock;	/* to "cancel read" to wdbUdpSock *//* foward declarations */static int  wdbUdpSockRcvfrom	(WDB_COMM_ID commId, caddr_t addr, uint_t len,				 struct sockaddr_in *pAddr, struct timeval *tv);static int  wdbUdpSockSendto	(WDB_COMM_ID commId, caddr_t addr, uint_t len,				 struct sockaddr_in *pAddr);static int  wdbUdpSockModeSet	(WDB_COMM_ID commId, uint_t newMode);static int  wdbUdpSockCancel	(WDB_COMM_ID commId);/******************************************************************************** wdbUdpSockIfInit - Initialize the WDB communication function pointers.*/STATUS wdbUdpSockIfInit    (    WDB_COMM_IF *	pWdbCommIf    )    {    struct sockaddr_in srvAddr;    pWdbCommIf->rcvfrom	= wdbUdpSockRcvfrom;    pWdbCommIf->sendto	= wdbUdpSockSendto;    pWdbCommIf->modeSet = wdbUdpSockModeSet;    pWdbCommIf->cancel  = wdbUdpSockCancel;    pWdbCommIf->hookAdd = NULL;    pWdbCommIf->notifyHost = NULL;    /* Create the wdbUdpSocket */    if ((wdbUdpSock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)        {        printErr ("Socket failed\n");        return (ERROR);        }    /* Bind to WDB agents port number */    bzero ((char *)&srvAddr, sizeof(srvAddr));    srvAddr.sin_family      = AF_INET;    srvAddr.sin_port        = htons(WDBPORT);    srvAddr.sin_addr.s_addr = htonl(INADDR_ANY);    if (bind (wdbUdpSock, (struct sockaddr *)&srvAddr, sizeof(srvAddr)) < 0 )        {        printErr ("Bind failed\n");        return (ERROR);        }    /* Create the wdbUdpCancelSocket */    if ((wdbUdpCancelSock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)        {        printErr ("Socket failed\n");        return (ERROR);	}    /* connect it (for writes) to the wdbUdpSocket */    bzero ((char *)&srvAddr, sizeof(srvAddr));    srvAddr.sin_family      = AF_INET;    srvAddr.sin_port        = htons(WDBPORT);    srvAddr.sin_addr.s_addr = inet_addr ("127.0.0.1");    if (connect (wdbUdpCancelSock, (struct sockaddr *)&srvAddr, sizeof(srvAddr))				== ERROR)	{        printErr ("Connect failed\n");	return (ERROR);	}    return (OK);    }/******************************************************************************** wdbUdpSockModeSet - Set the communication mode (only INT is supported).*/static int wdbUdpSockModeSet    (    WDB_COMM_ID commId,    uint_t	newMode    )    {    if (newMode != WDB_COMM_MODE_INT)	return (ERROR);    return (OK);    }/******************************************************************************** wdbUdpSockRcvfrom - read data from the UDP socket with a timeout.*/static int wdbUdpSockRcvfrom    (    WDB_COMM_ID commId,    caddr_t	addr,    uint_t	len,    struct sockaddr_in *pSockAddr,    struct timeval *tv    )    {    uint_t		nBytes;    int 		addrLen = sizeof (struct sockaddr_in);    struct fd_set	readFds;    static struct route	theRoute;    struct sockaddr_in 	sockAddr;    /* wait for data with a timeout */    FD_ZERO (&readFds);    FD_SET  (wdbUdpSock, &readFds);    if (select (wdbUdpSock + 1, &readFds, NULL, NULL, tv) < 0)        {        printErr ("wdbUdpSockLib: select failed!\n");        return (0);        }    if (!FD_ISSET (wdbUdpSock, &readFds))        {        return (0);             /* select timed out */        }    /* read the data */    nBytes   = recvfrom (wdbUdpSock, addr, len, 0,			(struct sockaddr  *)pSockAddr, &addrLen);    if (nBytes < 4)	return (0);    /*      * The following is a fix for SPR #4645 (the agent does     * not report the correct MTU to the host). We lower     * the value of the global variable wdbCommMtu if a packet     * arrives via an interface with a smaller MTU.     *     * XXX This fix has some problems:     *   1) it uses rtalloc, which is not an approved interface.     *      Note: rtalloc doesn't seem to like having the port number     *            in the socket address.     *   2) it assumes all agent packets arrive via the same netif.     *   3) it doesn't take into account intermediate MTUs in a WAN.     * The right fix for (3) would be to use an MTU-discovey     * algorithm (e.g. send larger and larger IP datagrams with the     * "don't fragment" flag until an ICMP error is returned).     */    if (theRoute.ro_rt == NULL)	{	sockAddr = *pSockAddr;	sockAddr.sin_port = 0;	theRoute.ro_dst = * (struct sockaddr *) &sockAddr;	rtalloc (&theRoute);	if (theRoute.ro_rt != NULL)	    {	    if (wdbCommMtu > theRoute.ro_rt->rt_ifp->if_mtu)		wdbCommMtu = theRoute.ro_rt->rt_ifp->if_mtu;	    rtfree (theRoute.ro_rt);	    }	}    return (nBytes);    }/******************************************************************************** wdbUdpSockCancel - cancel a wdbUdpSockRcvfrom*/static int wdbUdpSockCancel    (    WDB_COMM_ID commId    )    {    char 		dummy;    netJobAdd (write, wdbUdpCancelSock, (int)&dummy, 1, 0, 0);    return (OK);    }/******************************************************************************** wdbUdpSockSendto - write data to a UDP socket.*/static int wdbUdpSockSendto    (    WDB_COMM_ID commId,    caddr_t addr,    uint_t len,    struct sockaddr_in * pRemoteAddr    )    {    uint_t		nBytes;    nBytes = sendto (wdbUdpSock, addr, len, 0, (struct sockaddr *)pRemoteAddr,			sizeof (*pRemoteAddr));    return (nBytes);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清国产一区二区| 精品国产乱码久久久久久图片| 91精品婷婷国产综合久久竹菊| 久久久精品天堂| 午夜视频一区在线观看| av在线一区二区三区| 91精品国产一区二区三区| 亚洲男人天堂一区| 国产成人在线视频播放| 4hu四虎永久在线影院成人| 亚洲欧美影音先锋| 国产精品一区二区果冻传媒| 欧美高清视频在线高清观看mv色露露十八 | 欧美一级艳片视频免费观看| 亚洲欧美一区二区三区孕妇| 狠狠色狠狠色合久久伊人| 欧美丰满美乳xxx高潮www| 亚洲欧美一区二区在线观看| 成人高清在线视频| 欧美激情一二三区| 粉嫩一区二区三区性色av| 久久综合久久综合亚洲| 精品中文字幕一区二区小辣椒| 69av一区二区三区| 日产精品久久久久久久性色| 欧美日韩国产精品成人| 亚洲综合一二区| 色欧美日韩亚洲| 玉米视频成人免费看| 欧美在线播放高清精品| 樱桃国产成人精品视频| 一本到不卡精品视频在线观看 | 国产精品99久久久久久久女警| 欧美另类高清zo欧美| 日韩在线播放一区二区| 欧美日韩和欧美的一区二区| 亚洲va韩国va欧美va| 欧美一区二区三区不卡| 久久精品国产免费| 欧美精品一区二区三区蜜臀| 国模娜娜一区二区三区| 久久久久久久电影| yourporn久久国产精品| 亚洲精品高清在线观看| 欧美日韩国产天堂| 久久99国产精品免费网站| 久久久五月婷婷| 99久久免费国产| 亚洲mv在线观看| 精品sm在线观看| 北条麻妃国产九九精品视频| 亚洲午夜在线视频| 精品女同一区二区| 白白色 亚洲乱淫| 亚洲高清免费视频| 久久综合久久综合九色| 97久久超碰国产精品| 日韩成人一级片| 国产欧美精品日韩区二区麻豆天美| 不卡免费追剧大全电视剧网站| 一级日本不卡的影视| 日韩一区二区麻豆国产| 丰满白嫩尤物一区二区| 亚洲成人你懂的| 国产无遮挡一区二区三区毛片日本| 99精品黄色片免费大全| 日韩精品成人一区二区在线| 亚洲国产精品传媒在线观看| 精品视频免费在线| 国产乱码精品一区二区三| 亚洲人妖av一区二区| 欧美一区二区精品| 99国产欧美久久久精品| 免费在线观看不卡| 亚洲欧美一区二区三区极速播放| 日韩欧美视频在线| 一本大道久久a久久精品综合| 免费的成人av| 亚洲综合在线观看视频| 久久久欧美精品sm网站 | 成人免费av在线| 日本不卡的三区四区五区| 国产精品国产三级国产| 精品国产一二三| 欧美三区免费完整视频在线观看| 成人妖精视频yjsp地址| 久久国产尿小便嘘嘘| 亚洲福利一区二区| 国产精品美日韩| 精品国产伦一区二区三区观看方式 | 日韩精品中文字幕一区二区三区 | 亚洲3atv精品一区二区三区| 国产精品入口麻豆九色| 26uuu国产日韩综合| 欧美日韩中字一区| 色综合欧美在线| 成人晚上爱看视频| 国产精品资源在线观看| 免费不卡在线观看| 图片区日韩欧美亚洲| 夜色激情一区二区| 成人免费一区二区三区视频| 欧美国产日韩一二三区| 久久综合成人精品亚洲另类欧美 | 欧美日韩免费高清一区色橹橹| 成人av动漫在线| 成人听书哪个软件好| 国产a久久麻豆| 国产91精品久久久久久久网曝门 | 久久精品国产77777蜜臀| 天堂蜜桃一区二区三区| 亚洲国产日韩a在线播放| 亚洲精品五月天| 一区二区在线观看视频| 亚洲激情在线激情| 一区二区欧美精品| 亚洲美女视频在线| 亚洲日本va午夜在线影院| 亚洲精选在线视频| 亚洲国产视频在线| 婷婷国产v国产偷v亚洲高清| 五月天亚洲婷婷| 久久99精品久久只有精品| 国产伦理精品不卡| 国产99久久久国产精品潘金 | 国产成人av一区二区| 国产精品1区二区.| 91亚洲国产成人精品一区二三| 91免费在线视频观看| 欧美日韩亚洲另类| 精品噜噜噜噜久久久久久久久试看| 精品盗摄一区二区三区| 欧美国产日韩精品免费观看| 亚洲欧美日韩一区二区| 亚洲成人免费在线观看| 久久99精品久久久久久国产越南| 国产成人高清视频| 欧洲一区二区三区在线| 日韩一区二区三区高清免费看看| 久久久99精品免费观看不卡| 亚洲视频在线一区| 日本色综合中文字幕| 粉嫩aⅴ一区二区三区四区| av影院午夜一区| 在线不卡欧美精品一区二区三区| 26uuu国产一区二区三区| 亚洲欧洲综合另类在线| 秋霞av亚洲一区二区三| 成人综合婷婷国产精品久久蜜臀| 色婷婷综合激情| 精品乱码亚洲一区二区不卡| 亚洲欧美另类图片小说| 日本亚洲天堂网| eeuss国产一区二区三区| 欧美欧美欧美欧美首页| 国产精品毛片无遮挡高清| 日韩av成人高清| 成人爱爱电影网址| 日韩欧美国产一区二区三区| 中文字幕精品一区二区三区精品| 午夜精品一区二区三区免费视频 | 老色鬼精品视频在线观看播放| 成人污视频在线观看| 欧美一级高清片在线观看| 国产色综合久久| 午夜电影一区二区| 色香色香欲天天天影视综合网| 久久综合久久综合九色| 日韩激情在线观看| 色欧美片视频在线观看| 亚洲国产精品黑人久久久| 青青草97国产精品免费观看无弹窗版| aaa亚洲精品| 国产婷婷一区二区| 日本不卡的三区四区五区| 在线这里只有精品| 国产精品毛片无遮挡高清| 激情久久五月天| 337p亚洲精品色噜噜噜| 亚洲精品国产a久久久久久| 国产精品一卡二卡在线观看| 91精品国产高清一区二区三区| 亚洲国产中文字幕| 91免费看`日韩一区二区| 久久久久国产精品人| 久久国产精品99久久久久久老狼| 欧美浪妇xxxx高跟鞋交| 亚洲精选免费视频| 色女孩综合影院| 日韩毛片高清在线播放| 成人av高清在线| 国产精品第四页| 盗摄精品av一区二区三区| 精品国产123| 国产精品系列在线观看| 日本一区二区三区免费乱视频| 国产成人免费视频精品含羞草妖精| 精品久久久久久久久久久久包黑料| 美日韩一级片在线观看| 欧美xxxx在线观看|