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

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

?? proxyarplib.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    semGive (proxySemId);    return (OK);    }/********************************************************************************* proxyNetDelete - delete a proxy network** This routine deletes the proxy network specified by <proxyAddr>.  It also* removes all the proxy clients that exist on that network.** RETURNS: OK, or ERROR if unsuccessful.**/STATUS proxyNetDelete    (    char *  			proxyAddr	/* proxy net address 	*/    )    {    PROXY_NET *			pNet;		/* proxy network	*/    NODE *			pNode;		/* client node		*/    PROXY_CLNT *		pClient;	/* proxy client		*/    STATUS 			status = ERROR;	/* return value		*/    struct in_addr		proxyAddrIn;    semTake (proxySemId, WAIT_FOREVER);    proxyAddrIn.s_addr = inet_addr (proxyAddr);    if ((pNet = proxyNetFind (&proxyAddrIn)) != NULL)	{					/* clear out the clients */        for (pNode = lstFirst (&pNet->clientList); pNode != NULL;)	    {	    pClient = NODE_TO_CLIENT (pNode);	    proxyClientRemove (pClient);	    pNode = lstNext (pNode);	    KHEAP_FREE((caddr_t)pClient);	    }    	lstDelete (&proxyNetList, &pNet->netNode);    	KHEAP_FREE((caddr_t)pNet);	status = OK;	}    semGive (proxySemId);    return (status);    }/********************************************************************************* proxyNetFind - find a proxy network structure** This routine finds the proxy network structure associated * with <proxyAddr>.  The `proxySemId' semaphore must already * be taken before calling this routine.** RETURNS: A PROXY_NET pointer if found, otherwise NULL.** ERRNO: *  S_proxyArpLib_INVALID_NET** NOMANUAL*/LOCAL PROXY_NET * proxyNetFind    (    struct in_addr *		pProxyAddr	/* proxy address */    )    {    PROXY_NET *			pNet;		/* proxy network */    for (pNet = (PROXY_NET *) lstFirst (&proxyNetList); (pNet != NULL);	 pNet = (PROXY_NET *) lstNext (&pNet->netNode))	if (pNet->proxyAddr.s_addr == pProxyAddr->s_addr)	    return (pNet);    errno = S_proxyArpLib_INVALID_PROXY_NET;    return (NULL);    }/********************************************************************************* proxyIsAMainNet - is the interface a main network ?** This routine determines if <mainAddr> is a main network.  * `proxySemId' must already be taken before this routine is called.** RETURNS: TRUE if a main network, FALSE otherwise.** NOMANUAL*/LOCAL BOOL proxyIsAMainNet    (    struct in_addr *		pMainAddr	/* main address */    )    {    PROXY_NET *			pNet;		/* proxy network */    for (pNet = (PROXY_NET *) lstFirst (&proxyNetList); (pNet != NULL);	 pNet = (PROXY_NET *) lstNext (&pNet->netNode))	if (pNet->mainAddr.s_addr == pMainAddr->s_addr)	   return (TRUE);    return (FALSE);    }/********************************************************************************* proxyNetShow - show proxy ARP networks** This routine displays the proxy networks and their associated clients.** EXAMPLE* .CS*     -> proxyNetShow*     main interface 147.11.1.182 proxy interface 147.11.1.183*        client 147.11.1.184* .CE** RETURNS: N/A** INTERNAL* calls printf while semaphore taken.*/void proxyNetShow (void)    {    PROXY_NET *		pNet;			/* proxy net		*/    PROXY_CLNT *	pClient;		/* proxy client		*/    NODE *		pNode;			/* pointer to node	*/						/* address in ascii	*/    char 		asciiAddr [ INET_ADDR_LEN ];    semTake (proxySemId, WAIT_FOREVER);    for (pNet = (PROXY_NET *) lstFirst (&proxyNetList);	 pNet != NULL; pNet = (PROXY_NET *) lstNext (&pNet->netNode))	{	inet_ntoa_b (pNet->mainAddr, asciiAddr);	printf ("main interface %s ", asciiAddr);	inet_ntoa_b (pNet->proxyAddr, asciiAddr);	printf ("proxy interface %s\n", asciiAddr);	for (pNode = lstFirst (&pNet->clientList); pNode != NULL;	     pNode = lstNext (pNode))	    {	    pClient = NODE_TO_CLIENT (pNode);	    inet_ntoa_b (pClient->ipaddr, asciiAddr);	    printf ("    client:%s\n", asciiAddr);	    }	}    semGive (proxySemId);    }/********************************************************************************* proxyClientAdd - add a proxy client** This routine adds the client, whose ip address is <pArpcom>.ac_ipaddr, onto * the proxy network identified by <pProxyNetAddr>.** RETURNS: OK, or ERROR if unsuccessful.** ERRNO:*  S_proxyArpLib_INVALID_ADDRESS** NOMANUAL*/LOCAL STATUS proxyClientAdd    (    struct arpcom * 	pArpcom, 	/* interface on proxy network */    struct in_addr * 	pClientAddr, 	/* client internet address */    u_char * 		pClientHwAddr 	/* client hardware address */    )    {    PROXY_NET * 	pNet; 		/* proxy net		*/    PROXY_CLNT * 	pClient; 	/* proxy client 	*/    struct sockaddr_in 	sin;		/* sin structure 	*/    struct ifaddr * 	pIfa;		/* interface address	*/    struct in_addr * 	pProxyNetAddr;	/* proxy net address	*/    int flags; 				/* ARP flags */    /* validate addresses */    pProxyNetAddr = &pArpcom->ac_ipaddr;    if ((in_netof (*pProxyNetAddr) != in_netof (*pClientAddr)) ||        in_broadcast (*pClientAddr, (struct ifnet *)pArpcom))	{	errno = S_proxyArpLib_INVALID_ADDRESS;	return (ERROR);	}    if ((pClient = (PROXY_CLNT *) KHEAP_ALLOC(sizeof(PROXY_CLNT))) == NULL)	return (ERROR);    bzero ((char *)pClient, sizeof(PROXY_CLNT));    semTake (proxySemId, WAIT_FOREVER);    if (!proxyIsAproxyNet (pClientAddr) &&        ((pNet = (PROXY_NET *) proxyNetFind (pProxyNetAddr)) != NULL))	{						/* find main interface */    	SIN_FILL (&sin, AF_INET, pNet->mainAddr.s_addr, 0);    	if ((pIfa = ifa_ifwithaddr ((struct sockaddr *) &sin)) != NULL)	    {	    (void) proxyClientDelete (pClientAddr);	    /*	     * Create a cloneable route (which will ultimately produce a	     * standard ARP entry for the client) and add the client to             * the active list.	     */	    if (proxyRouteCmd (pClientAddr->s_addr, pProxyNetAddr->s_addr, 			  SIOCADDRT) == OK)		{		pClient->pNet	= pNet;		pClient->ipaddr	= *pClientAddr;	        bcopy (pClientHwAddr, pClient->hwaddr,                       sizeof (struct ether_addr));              		hashTblPut (clientTbl, &pClient->hashNode);		lstAdd (&pNet->clientList, &pClient->clientNode);                /*                 * Send a gratuitous ARP request to update any entries                 * on the main network.                 */	        proxyArpSend (pIfa->ifa_ifp, ARPOP_REQUEST, ETHERTYPE_IP,			      (u_char *) pClientAddr, (u_char *) NULL,			      (u_char *) pClientAddr);                /*                 * Add a proxy ARP entry allowing the standard ARP processing                 * to reply to requests for this client from hosts on other                 * networks. Ignore failures caused if an entry already exists.                 */                flags = ATF_PUBL | ATF_PROXY | ATF_PERM;                arpCmd (SIOCSARP, pClientAddr, pClientHwAddr, &flags);	        if (proxyArpVerbose)		    logMsg ("added client 0x%x proxyNet 0x%x\n",			    ntohl (pClientAddr->s_addr), 			    ntohl (pProxyNetAddr->s_addr), 0, 0, 0, 0);		semGive (proxySemId);		return (OK);		}	    }	else	    {	    if (proxyArpVerbose)		logMsg ("proxyClientAdd: no main if 0x%x\n",			ntohl (pNet->mainAddr.s_addr), 0, 0, 0, 0, 0);	    }	}    semGive (proxySemId);    KHEAP_FREE((caddr_t)pClient);    return (ERROR);    }/********************************************************************************* proxyClientDelete - delete a proxy client** This routines deletes the proxy client specified by <pClientAddr>.** RETURNS: OK, or ERROR if unsuccessful.** NOMANUAL*/LOCAL STATUS proxyClientDelete    (    struct in_addr *		pClientAddr		/* client address   */    )    {    PROXY_CLNT *		pClient;		/* proxy client     */    STATUS 			status = ERROR;		/* return status    */    semTake (proxySemId, WAIT_FOREVER);    if ((pClient = proxyClientFind (pClientAddr)) != NULL)	{	proxyClientRemove (pClient);	lstDelete (&pClient->pNet->clientList, &pClient->clientNode);    	if (proxyArpVerbose)	    logMsg ("deleted client 0x%x\n", ntohl (pClientAddr->s_addr), 0, 		    0, 0, 0, 0);	status = OK;	}    semGive (proxySemId);    if (pClient != NULL)	KHEAP_FREE((caddr_t)pClient);    return (status);    }/********************************************************************************* proxyClientFind - find a proxy client** This routine finds the proxy client structure associated with <pClientAddr>.* Caller must have taken `proxySemId' before this routine is called.** RETURNS: Pointer to PROXY_CLNT if found, NULL otherwise.** ERRNO:*  S_proxyArpLib_INVALID_CLIENT** NOMANUAL*/LOCAL PROXY_CLNT * proxyClientFind    (    struct in_addr *		pClientAddr		/* client address    */    )    {    PROXY_CLNT			client;			/* client to find    */    PROXY_CLNT *		pClient;		/* pointer to client */    client.ipaddr.s_addr = pClientAddr->s_addr;    if ((pClient = (PROXY_CLNT *)	   hashTblFind (clientTbl, &client.hashNode, 0)) == NULL)    	errno = S_proxyArpLib_INVALID_CLIENT;    return (pClient);    }/********************************************************************************* proxyPortFwdOn - enable broadcast forwarding for a particular port** This routine enables broadcasts destined for the port, <port>, to be * forwarded to and from the proxy network.  To enable all ports, specify * zero for <port>.** RETURNS: OK, or ERROR if unsuccessful.*/STATUS proxyPortFwdOn    (    int			port			/* port number 		*/    )    {    PORT_NODE *		pPort;			/* port node 		*/    if ((pPort = (PORT_NODE *) KHEAP_ALLOC(sizeof(PORT_NODE))) == NULL)	return (ERROR);    bzero ((char *)pPort, sizeof(PORT_NODE));    semTake (portTblSemId, WAIT_FOREVER);    if (portTblFind (port) != NULL)	/* already enabled so ok */	{	semGive (portTblSemId);	KHEAP_FREE((caddr_t)pPort);	return (OK);	}    pPort->port = (int) port;    (void) hashTblPut (portTbl, &pPort->hashNode);    semGive (portTblSemId);    return (OK);    }/********************************************************************************* proxyPortFwdOff - disable broadcast forwarding for a particular port** This routine disables broadcast forwarding on port number <port>.  To* disable the (previously enabled) forwarding of all ports via* proxyPortFwdOn(), specify zero for <port>.** RETURNS: OK, or ERROR if unsuccessful.*/STATUS proxyPortFwdOff    (    int			port			/* port number		*/    )    {    PORT_NODE *		pPort;			/* port node 		*/    semTake (portTblSemId, WAIT_FOREVER);    if ((pPort = portTblFind (port)) == NULL)	{				/* not in port table so ok */	semGive (portTblSemId);	return (OK);	}    (void) hashTblRemove (portTbl, &pPort->hashNode);    semGive (portTblSemId);    KHEAP_FREE((caddr_t)pPort);    return (OK);    }/********************************************************************************* portTblFind - find the port node** This routine finds the port node associated with port number <port>.** RETURNS: A pointer to the port node, or NULL if not found.** NOMANUAL*/LOCAL PORT_NODE * portTblFind    (    int		port			/* port number		*/    )    {    PORT_NODE		portNode;		/* port node		*/    portNode.port = (int) port;    return ((PORT_NODE *) hashTblFind (portTbl, &portNode.hashNode, 0));    }/********************************************************************************* proxyPortShow - show ports enabled for broadcast forwarding** This routine displays the destination ports for which the proxy ARP server* will forward broadcast messages between the physically separate networks.** EXAMPLE* .CS*     -> proxyPortShow*     enabled ports:*        port 67* .CE** RETURNS: N/A** INTERNAL* calls printf() while semaphore taken.*/void proxyPortShow (void)    {    semTake (portTblSemId, WAIT_FOREVER);    printf ("enabled ports:\n");    if (portTblFind (0) != NULL)	printf ("    all ports enabled\n");    else	hashTblEach (portTbl, proxyPortPrint, 0);    semGive (portTblSemId);    }/********************************************************************************* proxyPortPrint - print ports enabled*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲亚洲精品在线观看| 日韩你懂的在线观看| 国产午夜精品一区二区三区嫩草 | 国产激情一区二区三区| 2014亚洲片线观看视频免费| 国产麻豆精品theporn| 国产精品视频免费| 一本到三区不卡视频| 亚洲一区视频在线观看视频| 欧美精品v国产精品v日韩精品 | 91精品麻豆日日躁夜夜躁| 天天射综合影视| 日韩免费高清视频| 国产成人精品免费在线| 国产精品国产三级国产普通话三级| 91免费精品国自产拍在线不卡| 亚洲欧美色图小说| 欧美一区二区精品在线| 久久99国产精品尤物| 18成人在线视频| 91精品欧美综合在线观看最新 | 成人动漫在线一区| 一区二区三区久久| 欧美电影免费观看完整版| 大白屁股一区二区视频| 一区二区三区.www| 久久综合色之久久综合| 91成人国产精品| 久久丁香综合五月国产三级网站| 国产精品麻豆久久久| 欧美一区二区三区在| 成人一区在线观看| 日本亚洲最大的色成网站www| 久久久久久久久久久久久久久99 | 天天亚洲美女在线视频| 国产区在线观看成人精品| 欧美系列日韩一区| 国产一区二区不卡在线| 亚洲影院理伦片| 国产片一区二区三区| 欧美日韩一本到| 成人性生交大合| 日韩和欧美一区二区三区| 中文字幕av一区二区三区| 欧美一卡2卡3卡4卡| 99久久精品国产网站| 日本不卡一区二区三区高清视频| 国产精品不卡在线观看| 精品国产一区二区三区不卡| 欧美色图一区二区三区| 成人免费观看av| 国产最新精品精品你懂的| 亚洲精品视频在线观看网站| 久久精品水蜜桃av综合天堂| 欧美一区二区三区视频在线| 色综合久久88色综合天天| 精品一区二区三区蜜桃| 亚洲va国产天堂va久久en| 亚洲免费观看高清完整版在线观看| 久久天堂av综合合色蜜桃网| 91麻豆精品国产91久久久久久久久| 在线一区二区三区四区| 99国产精品久久久久久久久久| 国产一区二区91| 久久国产三级精品| 日韩va亚洲va欧美va久久| 亚洲曰韩产成在线| 亚洲一区二区三区小说| 日韩毛片视频在线看| 国产精品久久久久永久免费观看 | 日韩欧美高清dvd碟片| 欧美日韩视频一区二区| 在线观看精品一区| 91黄视频在线| 欧美在线观看视频一区二区 | 激情另类小说区图片区视频区| 日韩电影一区二区三区| 日韩综合一区二区| 视频在线在亚洲| 免费在线看成人av| 麻豆精品久久精品色综合| 蜜桃视频在线观看一区二区| 日韩精品欧美精品| 久久精品国产秦先生| 精品在线一区二区| 国产精品亚洲午夜一区二区三区 | 亚洲国产精品视频| 亚洲一区二区三区视频在线播放| 亚洲国产成人av网| 亚洲影视在线播放| 日韩电影免费在线| 国产在线播放一区三区四| 国产一区二区三区视频在线播放| 国产综合色视频| 不卡一区二区在线| av中文字幕在线不卡| 99久久国产综合色|国产精品| 91福利在线观看| 色噜噜狠狠成人网p站| 欧美日本视频在线| 日韩三级视频在线看| 国产欧美精品区一区二区三区| 国产农村妇女精品| 一区二区三区四区乱视频| 亚洲国产成人91porn| 韩国午夜理伦三级不卡影院| 国产成人综合视频| 在线视频欧美区| 日韩视频一区在线观看| 国产精品女同一区二区三区| 亚洲男女一区二区三区| 美女视频黄a大片欧美| 成人一区二区三区| 91精品一区二区三区在线观看| 精品sm捆绑视频| 亚洲欧美色图小说| 美国三级日本三级久久99| 成人精品在线视频观看| 欧美系列日韩一区| 久久久久久久久免费| 亚洲精品视频在线| 奇米在线7777在线精品| 国产一区二区三区观看| 欧美性xxxxxx少妇| 久久蜜桃一区二区| 日韩一区中文字幕| 蜜臀99久久精品久久久久久软件| 成人天堂资源www在线| 欧美精品第1页| 亚洲精品国产精品乱码不99| 日本不卡不码高清免费观看 | 成人手机电影网| caoporm超碰国产精品| 欧美专区日韩专区| 国产日韩精品一区| 亚洲成人精品影院| av成人免费在线| 日韩一区二区影院| 亚洲综合免费观看高清完整版在线 | 日韩三级视频在线看| 精品国产一区二区三区四区四| 久久精品日产第一区二区三区高清版 | 亚洲激情自拍视频| 国产精品69久久久久水密桃| 欧美在线观看视频一区二区三区| 久久久亚洲精品石原莉奈| 夜夜揉揉日日人人青青一国产精品| 偷拍一区二区三区四区| 色系网站成人免费| 久久日一线二线三线suv| 亚洲第一主播视频| 春色校园综合激情亚洲| 日韩一级片在线播放| 亚洲在线免费播放| 不卡一卡二卡三乱码免费网站| 精品少妇一区二区三区免费观看| 亚洲精品精品亚洲| 成年人国产精品| 久久日一线二线三线suv| 亚洲一区二区三区中文字幕在线| 9人人澡人人爽人人精品| 久久综合资源网| 美女一区二区三区在线观看| 欧美专区日韩专区| 亚洲成人免费看| 日本伦理一区二区| 国产精品激情偷乱一区二区∴| 日韩1区2区日韩1区2区| 欧美蜜桃一区二区三区| 国产精品久久毛片| 国产成人精品影视| 精品国产乱码久久久久久老虎| 老色鬼精品视频在线观看播放| 欧美日韩一区二区在线观看视频| 亚洲欧美激情插| 97精品国产露脸对白| 亚洲色图欧美激情| 97se亚洲国产综合自在线观| 国产欧美一二三区| 国产成人在线视频免费播放| 久久久精品免费观看| 国产精品一二一区| 国产午夜精品久久久久久免费视 | 亚洲午夜久久久久中文字幕久| av一二三不卡影片| 亚洲图片欧美色图| 欧美日韩mp4| 日韩成人精品视频| 精品裸体舞一区二区三区| 麻豆精品一区二区三区| 久久综合色之久久综合| 国产成人综合网站| 亚洲你懂的在线视频| 91福利视频久久久久| 午夜欧美一区二区三区在线播放| 欧美一区二区免费观在线| 久久国内精品自在自线400部| 久久综合九色综合欧美亚洲| 精品在线一区二区| 国产精品视频一二三|