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

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

?? bpfproto.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* bpfProto.c - Berkeley Packet Filter (BPF) protocol interface *//* Copyright 1999 - 2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*- * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996 *	The Regents of the University of California.  All rights reserved. * * This code is derived from the Stanford/CMU enet packet filter, * (net/enet.c) distributed as part of 4.3BSD, and code contributed * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence * Berkeley Laboratory. * * 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. * *	@(#)bpf.c	7.5 (Berkeley) 7/15/91 * * static char rcsid[] = * "$Header: bpf.c,v 1.67 96/09/26 22:00:52 leres Exp $"; *//*modification history--------------------01e,13nov01,wap  added support for NPT Drivers and allow for qtag support.01d,26jan01,ijm  corrected leak in bpfBsdProtoInput01c,17nov00,spm  added support for BSD Ethernet devices01b,26oct00,spm  fixed merge from tor3_x branch and updated mod history01a,23oct00,niq  created from version 01c of tor3_x branch*/#define INCLUDE_IP     /* hack to have ipProto filter out promisc pkts *//* includes */#include "vxWorks.h"#include "stdio.h"#include "stdlib.h"#include "lstLib.h"#include "logLib.h"#include "netLib.h"#include "muxLib.h"#include "muxTkLib.h"#include "netBufLib.h"#include "end.h"#include "etherLib.h"#include "private/muxLibP.h"    /* PCOOKIE_TO_ENDOBJ conversion macro */#include "private/bpfLibP.h"#include "net/bpf.h"#ifdef INCLUDE_IP#include "ifLib.h"#endif/* defines */#define BPF_PROTO_NAME "Berkeley Packet Filter"#define DEBUG#ifdef DEBUG#undef LOCAL#define LOCAL#endif  /* DEBUG *//* locals */LOCAL BOOL bpfProtoInitDone = FALSE;   /* TRUE if BPF MUX proto */                                       /* has been initialized */LOCAL LIST lstProtoInUse;    /* attached network interfaces */LOCAL int bpfDltTbl [] =         /* Translation tbl from m2 ifType to DLT */    {	DLT_NULL,	DLT_NULL,      /* M2_ifType_other */	DLT_NULL,      /* M2_ifType_regular1822 */	DLT_NULL,      /* M2_ifType_hdh1822 */	DLT_AX25,      /* M2_ifType_ddn_x25 */	DLT_AX25,      /* M2_ifType_rfc877_x25 */	DLT_EN10MB,    /* M2_ifType_ethernet_csmacd */	DLT_IEEE802,   /* M2_ifType_iso88023_csmacd */	DLT_IEEE802,   /* M2_ifType_iso88024_tokenBus */	DLT_IEEE802,   /* M2_ifType_iso88025_tokenRing */	DLT_IEEE802,   /* M2_ifType_iso88026_man */	DLT_NULL,      /* M2_ifType_starLan */	DLT_PRONET,    /* M2_ifType_proteon_10Mbit */	DLT_PRONET,    /* M2_ifType_proteon_80Mbit */	DLT_NULL,      /* M2_ifType_hyperchannel */	DLT_FDDI,      /* M2_ifType_fddi */	DLT_NULL,      /* M2_ifType_lapb */	DLT_NULL,      /* M2_ifType_sdlc */	DLT_NULL,      /* M2_ifType_ds1 */	DLT_NULL,      /* M2_ifType_e1 */	DLT_NULL,      /* M2_ifType_basicISDN */	DLT_NULL,      /* M2_ifType_primaryISDN */	DLT_NULL,      /* M2_ifType_propPointToPointSerial */	DLT_PPP,       /* M2_ifType_ppp */	DLT_NULL,      /* M2_ifType_softwareLoopback */	DLT_NULL,      /* M2_ifType_eon */	DLT_EN3MB,     /* M2_ifType_ethernet_3Mbit */	DLT_NULL,      /* M2_ifType_nsip */	DLT_SLIP,      /* M2_ifType_slip */	DLT_NULL,      /* M2_ifType_ultra */	DLT_NULL,      /* M2_ifType_ds3 */	DLT_NULL,      /* M2_ifType_sip */	DLT_NULL,      /* M2_ifType_frame_relay */    };LOCAL int bpfDltTblSize = NELEMENTS (bpfDltTbl);  /* size of BPF DLT   */                                                  /* translation table */LOCAL int bpfBsdDevCount = 0;  /* BPF devices attached to BSD devices. *//* forward declarations */LOCAL BOOL bpfProtoInput (void * pCookie, long type, M_BLK_ID pMBlk,			  LL_HDR_INFO * pLlHdrInfo, 			  void * pProtoCtrl);LOCAL BOOL bpfBsdProtoInput (struct ifnet * pIf, char * pBuffer, int length);LOCAL STATUS bpfProtoShutdown (void * pCookie, void * pProtoCtrl);LOCAL STATUS bpfTkProtoShutdown (void * pProtoCtrl);LOCAL BOOL bpfTkProtoInput (void * pProtoCtrl, long type, M_BLK_ID pMBlk,                            void * pSpare);    /*     * Called with global BPF lock to prevent conflicts with attach routine     * and promiscuous setting. This routine removes the last attachment     * of a BPF device from a network interface and also detaches the     * corresponding BPF MUX protocols.     */STATUS _bpfProtoDetach    (    BPF_DEV_CTRL * pBpfDev 	/* BPF device control structure */    )    {    BPF_PROTO_CTRL * pNew;      /* BPF units from other devices, if any. */    BOOL bsdFlag; 	/* Attached to BSD or END device? */    bsdFlag = pBpfDev->pNetDev->bsdFlag;    /*     * Find a BPF device using the same     * network interface as this unit.     */    for (pNew = (BPF_PROTO_CTRL *)lstFirst (&lstProtoInUse);         pNew != NULL;         pNew = (BPF_PROTO_CTRL *)lstNext ((NODE *)pNew))        {        if (bsdFlag)            {            if (pNew->pCookie == pBpfDev->pNetDev->pCookie)                break;            }        else if (PCOOKIE_TO_ENDOBJ(pNew->pCookie) ==                    PCOOKIE_TO_ENDOBJ(pBpfDev->pNetDev->pCookie))            break;        }    if (pNew == NULL)    /* No such device attached? (Can't really occur). */        return (ERROR);    if (pNew != pBpfDev->pNetDev)        {        /*         * The given BPF unit is part of a BPF device which shares the         * same network interface as an earlier BPF device. Just remove         * it from the private list.         */        lstDelete (& (pNew->bpfDevList), (NODE *) (pBpfDev->pNetDev));        }    else        {        /*         * The given BPF unit is part of the first BPF device which         * used the network interface. Update the global list if other         * BPF devices are using the same network interface.         */        if (lstCount (& (pNew->bpfDevList)) != 0)            {            /* Move the first shared device element to the global list. */            pNew = (BPF_PROTO_CTRL *)lstGet (& (pBpfDev->pNetDev->bpfDevList));            if (pNew != NULL)                {                lstInsert (&lstProtoInUse, (NODE *) (pBpfDev->pNetDev),                           (NODE *)pNew);                /* Move other attached devices to the (new) private list. */                lstConcat (& (pNew->bpfDevList),                           & (pBpfDev->pNetDev->bpfDevList));                }            }        /* Remove the (old) root of the private list from the global list. */        lstDelete (&lstProtoInUse, (NODE *) (pBpfDev->pNetDev));        }    /*     * No BPF units from the old BPF device are using the     * network interface. Remove any attached MUX protocols.     * Alternatively, remove the Ethernet input hook if no     * other BPF devices are using any BSD network interface.     */    if (pBpfDev->pNetDev->bsdFlag == TRUE)        {        bpfBsdDevCount--;        if (bpfBsdDevCount == 0)            etherInputHookDelete (bpfBsdProtoInput, NULL, 0);        }    else if (pBpfDev->pNetDev->pCookie != NULL)        {        int deviceType = muxTkDrvCheck (pBpfDev->pNetDev->devName);        if (deviceType != ERROR)            {            if ( deviceType == 0 )                muxUnbind (pBpfDev->pNetDev->pCookie, MUX_PROTO_SNARF,                       (FUNCPTR) bpfProtoInput);            else                muxUnbind (pBpfDev->pNetDev->pCookie, MUX_PROTO_SNARF,                       (FUNCPTR) bpfTkProtoInput);            }        }    return (OK);    }LOCAL STATUS bpfProtoShutdown     (    void * pCookie,    void * pProtoCtrl    )    {    BPF_PROTO_CTRL * pBpfProto;    BPF_DEV_CTRL * pBpfDev;    pBpfProto = (BPF_PROTO_CTRL *) pProtoCtrl;    for (pBpfDev = (BPF_DEV_CTRL *) lstFirst (& (pBpfProto->bpfUnitList));         pBpfDev != NULL;         pBpfDev = (BPF_DEV_CTRL *) lstNext ((NODE *) pBpfDev))        {        _bpfDevDetach (pBpfDev);        }        return (OK);    }    /*     * Check incoming frame against every BPF unit attached to a network     * device using the MUX/END interface. The BPF device containing the     * attachment data must still exist or the MUX would not call this     * routine. Always return FALSE to allow normal stack processing after     * applying any filters.     */LOCAL BOOL bpfProtoInput     (    void * pCookie,     long type,    M_BLK_ID pMBlk,    LL_HDR_INFO * pLlHdrInfo,     void * pProtoCtrl    )    {    BPF_PROTO_CTRL * pNetDev;    /* Access a BPF unit's attachment to the network interface. */    pNetDev = (BPF_PROTO_CTRL *)pProtoCtrl;    if (pNetDev->pCookie != pCookie)        {        /* Mismatched binding? Should never occur. */        return (FALSE);        }    /* Apply the current filters and save matching frames. */    _bpfPacketTap (& (pNetDev->bpfUnitList), type, pMBlk,                    pLlHdrInfo->dataOffset);    return (FALSE);    }    /*     * Check incoming frame against any BPF unit attached to the     * network device using the BSD interface. Always return FALSE     * to allow normal stack processing after applying any filters.     */LOCAL BOOL bpfBsdProtoInput     (    struct ifnet * pIf, 	/* interface which received frame */    char * pBuffer, 		/* pointer to received frame */    int length 			/* length of received frame */    )    {    BPF_PROTO_CTRL * pFirst;    BPF_PROTO_CTRL * pNext;    M_BLK_ID pMbuf;    /* Find any BPF units attached to the network interface. */    for (pFirst = (BPF_PROTO_CTRL *)lstFirst (&lstProtoInUse);         pFirst != NULL;         pFirst = (BPF_PROTO_CTRL *)lstNext ((NODE *)pFirst))        {        /* Ignore attachments to END network interfaces. */        if (pFirst->bsdFlag == FALSE)            continue;        /* Ignore attachments to different BSD network interfaces. */        if (pFirst->pCookie == pIf)            break;        }     /*      * Exit if no BPF device is using this BSD network interface.      * (This situation can occur frequently since all devices call      * this routine with incoming data as long as any input hook is      * installed).      */    if (pFirst == NULL)        return (FALSE);    /*     * Build an mBlk chain containing the data.     * (This step is wasteful since the driver does the same thing,     * but the Ethernet hook interface doesn't allow access to that     * mBlk and the BPF implementation requires one).     */    pMbuf = bcopy_to_mbufs (pBuffer, length, 0, pIf, NONE);    if (pMbuf == NULL)        return (FALSE);    /* Apply the current filters and save matching frames. */    _bpfPacketTap (& (pFirst->bpfUnitList), ETHERTYPE_IP, pMbuf,                    SIZEOF_ETHERHEADER);    for (pNext = (BPF_PROTO_CTRL *)lstFirst (& (pFirst->bpfDevList));         pNext != NULL;         pNext = (BPF_PROTO_CTRL *)lstNext ((NODE *)pNext))        {        _bpfPacketTap (& (pNext->bpfUnitList), ETHERTYPE_IP, pMbuf,                        SIZEOF_ETHERHEADER);        }    /* Free the buffer */    netMblkClChainFree(pMbuf);    return (FALSE);    }/* * Make pBpfDev listen on named interface.  * Must be called by a routine holding the global BPF lock. */STATUS _bpfProtoAttach    (    BPF_DEV_CTRL * pBpfDev,    char * 	pDevName, 	/* Name of network interface device. */    int 	devUnit, 	/* Unit number of network interface. */    struct ifnet * pIf 		/* Interface handle for BSD device. */    )    {    M2_INTERFACETBL m2Tbl;       BPF_DEV_CTRL *   pBpfUnit;    BPF_PROTO_CTRL * pNetIfCtrl;    BPF_PROTO_CTRL * pFirst;    BPF_PROTO_CTRL * pLast = NULL;    NODE tmpNode;    /* Check if a BPF device is already attached to the network interface. */    for (pNetIfCtrl = (BPF_PROTO_CTRL *)lstFirst (&lstProtoInUse);         pNetIfCtrl != NULL;         pNetIfCtrl = (BPF_PROTO_CTRL *) lstNext ((NODE *) pNetIfCtrl))        {        if (devUnit == pNetIfCtrl->devUnit &&            strncmp (pDevName, pNetIfCtrl->devName, END_NAME_MAX) == 0)            break;        }    if (pNetIfCtrl == NULL)        {        /* Add this BPF unit's attachment data to the global list. */        pFirst = pBpfDev->pNetIfCtrl;        if (pFirst == NULL)            return (ENOBUFS);        lstAdd (&lstProtoInUse, (NODE *)pFirst);        pLast = pFirst;        }    else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久国产精麻豆99网站| 欧美日韩一本到| 天天影视涩香欲综合网| 国产精品久久夜| 日韩一区二区电影在线| 欧美一级在线视频| 粉嫩av一区二区三区| 免费看欧美美女黄的网站| 亚洲欧美另类久久久精品2019| 2021久久国产精品不只是精品| 欧美性大战久久| 欧洲av在线精品| 一本大道久久a久久精二百 | 成人av电影免费观看| 国产电影一区二区三区| 激情五月播播久久久精品| 老司机免费视频一区二区 | 亚洲一区二区在线免费看| 国产精品视频观看| 中文字幕一区免费在线观看| 国产亚洲精品7777| 亚洲国产精品精华液ab| 国产精品久久久久9999吃药| 国产精品毛片大码女人| 亚洲欧美国产高清| 一区二区三区免费| 亚洲亚洲精品在线观看| 男人操女人的视频在线观看欧美| 狠狠色丁香婷婷综合久久片| 精品一区二区三区日韩| 国产不卡一区视频| 色婷婷综合久色| 91麻豆精品国产自产在线 | 欧美日韩和欧美的一区二区| 日韩欧美黄色影院| 中文字幕av资源一区| 亚洲美女视频在线| 蓝色福利精品导航| 成人性生交大片免费看在线播放| 91久久精品国产91性色tv| 欧美天天综合网| 久久精品免视看| 日本不卡一二三| 欧美在线999| 国产精品蜜臀在线观看| 喷白浆一区二区| 91玉足脚交白嫩脚丫在线播放| 制服丝袜国产精品| 亚洲免费观看高清在线观看| 欧美a级理论片| 在线播放中文字幕一区| 中文字幕一区二区三区四区| 精品一二三四区| 欧美色大人视频| 亚洲人妖av一区二区| 一二三区精品福利视频| 青青草国产成人99久久| 国产最新精品免费| av电影天堂一区二区在线| 久久网站热最新地址| 精品国产自在久精品国产| 欧美日韩精品免费观看视频| 洋洋成人永久网站入口| 日韩成人av影视| 大胆欧美人体老妇| 日韩西西人体444www| 国产精品美女视频| 亚洲黄色免费网站| 国产激情视频一区二区在线观看| 欧美在线观看视频在线| 国产亚洲综合色| 日韩成人av影视| 色婷婷久久久久swag精品| 成人性生交大片免费看中文网站| 欧美日韩小视频| 国产精品美女久久福利网站| 青青草91视频| 日本丰满少妇一区二区三区| 精品国产凹凸成av人导航| 国产三级一区二区| 国产一区不卡精品| 欧美高清激情brazzers| 成人欧美一区二区三区| 麻豆精品久久久| 在线观看亚洲精品| 中文字幕亚洲一区二区av在线| 国产精品免费看片| 国产精品一区久久久久| 久久综合久久99| 国产精品一级黄| 久久亚洲一区二区三区明星换脸 | 成人久久视频在线观看| 精品成人一区二区| 日韩精品亚洲专区| 欧美一区二区三区男人的天堂 | 欧美剧情片在线观看| 天天色 色综合| 日韩精品在线一区二区| 中文字幕在线一区二区三区| www.色综合.com| **欧美大码日韩| 色天天综合久久久久综合片| 亚洲精品第1页| 7777精品伊人久久久大香线蕉完整版| 久久亚洲精品国产精品紫薇| 国产主播一区二区| 国产欧美综合在线观看第十页| 国产成人精品亚洲午夜麻豆| 色噜噜狠狠色综合中国| 蜜桃av一区二区三区| 国产亚洲一区二区在线观看| 99久久久国产精品免费蜜臀| 亚洲中国最大av网站| 精品日韩欧美在线| 91香蕉视频在线| 亚洲在线观看免费视频| ww亚洲ww在线观看国产| 在线观看视频欧美| 国产高清亚洲一区| 亚洲电影在线播放| 成人欧美一区二区三区1314| 正在播放一区二区| 成人av资源下载| 日韩黄色免费电影| 在线成人小视频| 国产一区二区三区av电影| 亚洲成人综合网站| 亚洲视频小说图片| 国产日产精品1区| 久久久久久久网| 欧美日韩免费在线视频| 国产精品一二二区| 亚洲亚洲精品在线观看| 91精品国产手机| 色婷婷av久久久久久久| 国产a级毛片一区| 日本vs亚洲vs韩国一区三区二区 | 亚洲图片欧美视频| 国产精品美女久久久久高潮| 91一区二区在线| 国产成人免费视频一区| 免费在线观看精品| 首页亚洲欧美制服丝腿| 亚洲夂夂婷婷色拍ww47 | 国产一区二区精品久久99| 日韩电影在线观看一区| 日韩精品五月天| 久久电影网站中文字幕 | 在线区一区二视频| 在线免费一区三区| 在线观看视频一区| 日韩美女一区二区三区| 精品国产91九色蝌蚪| 久久综合精品国产一区二区三区| 精品国产三级电影在线观看| 久久精品日韩一区二区三区| 亚洲国产激情av| 亚洲一卡二卡三卡四卡| 日本三级亚洲精品| 亚洲国产另类精品专区| 久久精品国产久精国产| 国产成人aaa| 欧美视频在线一区| 久久久久久夜精品精品免费| 亚洲制服丝袜在线| 国内一区二区在线| 色综合久久久久综合体| 日韩免费看的电影| 亚洲一二三四区| 粉嫩13p一区二区三区| 欧美精品亚洲一区二区在线播放| 欧美高清激情brazzers| 久久国产精品一区二区| 91亚洲国产成人精品一区二区三| 91麻豆精品国产91| 国产精品乱人伦中文| 久久精品国产免费| 欧美亚洲国产一区二区三区| 久久久影视传媒| 亚洲主播在线播放| 一区二区三区四区不卡在线 | 久久久久久免费网| 欧美mv日韩mv国产网站| 在线观看国产日韩| 久久久久久久久99精品| 亚洲私人影院在线观看| 成人午夜在线播放| 日本一区二区电影| 久久精品国产精品亚洲红杏| 欧美日韩一区二区在线观看视频| 亚洲最大的成人av| 成人天堂资源www在线| 国产日产欧产精品推荐色| 国产成人精品aa毛片| 欧美一卡在线观看| 亚洲风情在线资源站| 成人av在线一区二区| 精品少妇一区二区三区在线播放| 一区二区三区欧美| 91久久精品一区二区|