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

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

?? etherlib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    if (pName != NULL) /* We are dealing with an END. */        {        if (etherInputHookActive == FALSE)     /* First END driver hook? */            {            if (etherInputHookRtn == NULL)                {                /* Initialize list - first network driver of either type. */                 lstInit (&inputHookList);                }            etherInputHookActive = TRUE;            }        /* Check if bind is necessary and eliminate duplicate hook routine. */        for (pHookCurr = (HOOK_ENTRY *)lstFirst(&inputHookList);              pHookCurr != NULL;             pHookCurr = (HOOK_ENTRY *)lstNext(&pHookCurr->node))            {            /* Ignore BSD device hook entries. */            if (pHookCurr->pCookie == NULL)                continue;            if (STREQ(pHookCurr->name, pName) && (pHookCurr->unit == unit))                {                if (pHookCurr->routine == inputHook)                    return (ERROR);                /* Additional hook for same device - reuse binding. */                pBinding = pHookCurr->pCookie;                }            }        pHookEnt = malloc (sizeof (HOOK_ENTRY));        if (pHookEnt == NULL)            return (ERROR);        bzero ( (char *)pHookEnt, sizeof (HOOK_ENTRY));        if (pBinding == NULL) 	/* No hook entry for this END device? */            {            /* Attach Ethernet input hook handler for this device. */	    tkDevice = muxTkDrvCheck (pName);            if (tkDevice)                {                pBinding = muxTkBind (pName, unit, nptEtherInputHookRtn,                                       NULL, NULL, NULL, MUX_PROTO_SNARF,                                       "etherInputHook", pHookEnt, NULL, NULL);                }            else                {                pBinding = muxBind (pName, unit, endEtherInputHookRtn,                                     NULL, NULL, NULL, MUX_PROTO_SNARF,                                     "etherInputHook", pHookEnt);                }            if (pBinding == NULL)                {                free (pHookEnt);                return (ERROR);                }            }        /*         * Assign (new or existing) handler attachment for the device,         * allowing hook deletion in any order.         */        pHookEnt->pCookie = pBinding;        strcpy (pHookEnt->name, pName);        pHookEnt->unit = unit;        pHookEnt->routine = inputHook;        lstAdd (&inputHookList, &pHookEnt->node);        }    else               /* Old style driver. */        {        /* Check for duplicate hook routine. */        for (pHookCurr = (HOOK_ENTRY *)lstFirst(&inputHookList);             pHookCurr != NULL;             pHookCurr = (HOOK_ENTRY *)lstNext(&pHookCurr->node))            {            if (pHookCurr->pCookie)    /* Ignore END device hook entries. */                continue;            if (pHookCurr->routine == inputHook)                return (ERROR);            }        pHookEnt = malloc(sizeof(HOOK_ENTRY));        if (pHookEnt == NULL)            return (ERROR);        bzero ( (char *)pHookEnt, sizeof (HOOK_ENTRY));        if (etherInputHookRtn == NULL)    /* First BSD driver hook? */            {            etherInputHookRtn = etherInputHook;            if (!etherInputHookActive)                {                /* Initialize list - first network driver of either type. */                lstInit (&inputHookList);                }            }        pHookEnt->routine = inputHook;        lstAdd(&inputHookList, &pHookEnt->node);        }    return (OK);    }/********************************************************************************* etherInputHookDelete - delete a network interface input hook routine** This routine deletes a network interface input hook.** RETURNS: N/A*/void etherInputHookDelete    (    FUNCPTR inputHook,    char *pName,    int unit    )    {    HOOK_ENTRY *pHookEnt;    HOOK_ENTRY *pTarget = NULL;    BOOL unbindFlag = TRUE;    /* Remove handler if hook found? */    if (pName != NULL)                       /* END case */        {        for (pHookEnt = (HOOK_ENTRY *)lstFirst(&inputHookList);             pHookEnt != NULL;             pHookEnt = (HOOK_ENTRY *)lstNext(&pHookEnt->node))            {            /* Ignore BSD device hook entries. */            if (pHookEnt->pCookie == NULL)                continue;            if (STREQ(pHookEnt->name, pName) && (pHookEnt->unit == unit))                {                if (pHookEnt->routine == inputHook)                    {                    /*                     * Found matching hook entry to remove. Keep searching                     * for other hooks on this device if needed.                     */                    pTarget = pHookEnt;                    if (!unbindFlag)    /* Another hook already found? */                        break;                    }                else                    {                    /*                     * Different hook on same driver - do not unbind.                     * Stop searching if target hook entry already found.                     */                    unbindFlag = FALSE;                    if (pTarget)                        break;                    }                }            }        if (pTarget)    /* Remove hook entry if match found. */            {            if (unbindFlag)   /* Remove binding if last hook for device. */                {                if (muxTkDrvCheck (pName))                    {                    muxUnbind (pTarget->pCookie, MUX_PROTO_SNARF,                               nptEtherInputHookRtn);                    }                else                    {                    muxUnbind (pTarget->pCookie, MUX_PROTO_SNARF,                               endEtherInputHookRtn);                    }                }            lstDelete (&inputHookList, &pTarget->node);            free (pTarget);            }        }    else                                     /* 4.4 case */        {        for (pHookEnt = (HOOK_ENTRY *)lstFirst(&inputHookList);             pHookEnt != NULL; pHookEnt = pTarget)            {            if (pHookEnt->pCookie)    /* Ignore END device hook entries. */                continue;            pTarget = (HOOK_ENTRY *)lstNext(&pHookEnt->node);            if (pHookEnt->routine == inputHook)                {                lstDelete(&inputHookList, &pHookEnt->node);                free(pHookEnt);                }            }        }        if (lstCount(&inputHookList) <= 0)        {        etherInputHookActive = FALSE;     /* No END driver hooks installed. */        etherInputHookRtn = NULL;         /* No BSD driver hooks installed. */        lstFree (&inputHookList);        }    }/********************************************************************************* etherOutputHookAdd - add a routine to receive all Ethernet output packets** This routine adds a hook routine that will be called for every Ethernet* packet that is transmitted.** The calling sequence of the output hook routine is:* .CS*     BOOL outputHook*         (*         struct ifnet *pIf,    /@ interface packet will be sent on @/*         char         *buffer, /@ packet to transmit               @/*         int          length   /@ length of packet to transmit     @/*         )* .CE* The hook is called immediately before transmission.  The hook routine* should return TRUE if it has handled the output packet and no further* action should be taken with it.  It should return FALSE if it has not* handled the output packet and normal transmission should take place.** The Ethernet packet data is in a temporary buffer when the hook routine* is called.  This buffer will be reused upon return from the hook.  If* the hook routine needs to retain the output packet, it should be copied* elsewhere.** IMPLEMENTATION* A call to the function pointed to be the global function pointer* `etherOutputHookRtn' should be invoked in the transmit routine of every* network driver providing this service.  For example:* .ne 14* .CS*     ...*     #include "etherLib.h"*     ...*     xxxStartOutput ()*     /@ call output hook if any @/*     if ((etherOutputHookRtn != NULL) &&*          (* etherOutputHookRtn) (&ls->ls_if, buf0, len))*         {*         /@ output hook has already processed this packet @/*         }*     else*     ...* .CE** RETURNS: OK if the hook was added, or ERROR otherwise.*/STATUS etherOutputHookAdd    (    FUNCPTR outputHook  /* routine to receive Ethernet output */    )    {    HOOK_ENTRY *pHookEnt;        pHookEnt = malloc(sizeof(HOOK_ENTRY));    if (pHookEnt == NULL)        return (ERROR);    if (etherOutputHookRtn == NULL)        {        etherOutputHookRtn = etherOutputHook;        lstInit(&outputHookList);        }    pHookEnt->routine = outputHook;    lstAdd(&outputHookList, &pHookEnt->node);    return (OK);    }/********************************************************************************* etherOutputHookDelete - delete a network interface output hook routine** This routine deletes a network interface output hook, which must be supplied* as the only argument.** RETURNS: N/A*/void etherOutputHookDelete    (    FUNCPTR outputHook    )    {    HOOK_ENTRY *pHookEnt;    extern LIST outputHookList;    NODE index;    for (pHookEnt = (HOOK_ENTRY *)lstFirst(&outputHookList);          pHookEnt != NULL;         pHookEnt = (HOOK_ENTRY *)lstNext(&index))        {        index = pHookEnt->node;        if (pHookEnt->routine == outputHook)            {            lstDelete(&outputHookList, &pHookEnt->node);            free(pHookEnt);            }        }        if (lstCount(&outputHookList) <= 0)        {        etherOutputHookRtn = NULL;        lstFree(&outputHookList);        }    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一二三四在线| 欧美丰满少妇xxxxx高潮对白| 福利一区二区在线| 一本一本大道香蕉久在线精品| 欧美日韩国产首页| 日本一区二区三级电影在线观看 | 不卡一区二区三区四区| 欧美怡红院视频| 国产精品美女久久久久久久| 日韩va欧美va亚洲va久久| 99精品视频在线免费观看| 欧美不卡在线视频| 亚洲综合色区另类av| www..com久久爱| 久久综合久久综合久久| 日韩精品一二三四| 欧美视频第二页| 亚洲天堂免费在线观看视频| 国产成人福利片| 日韩女优av电影| 亚洲gay无套男同| 欧美三级中文字| 亚洲一级二级在线| 91成人免费在线| 成人免费一区二区三区在线观看 | 亚洲一区二区不卡免费| 成人午夜又粗又硬又大| 国产欧美日韩在线看| 紧缚奴在线一区二区三区| 欧美一级一区二区| 日韩和欧美一区二区| 91麻豆精品国产| 国产真实乱子伦精品视频| 国产精品丝袜一区| 国产女人18毛片水真多成人如厕| 欧美日韩精品高清| 欧美在线看片a免费观看| 91黄色免费版| 色婷婷久久久综合中文字幕| 91看片淫黄大片一级在线观看| 精品一区二区在线免费观看| 欧美aⅴ一区二区三区视频| 蜜桃久久精品一区二区| 精品一区二区三区影院在线午夜 | 国产精品资源在线观看| 日韩久久精品一区| 久久精品国产一区二区三区免费看| 日韩一区二区三区电影| 狠狠色综合播放一区二区| 久久婷婷国产综合精品青草| 国产在线不卡视频| 国产精品久久久久影院亚瑟| 色综合咪咪久久| 日韩精品国产精品| 国产午夜精品一区二区| 色婷婷av一区二区三区gif | 欧美精品久久99久久在免费线| 午夜精品免费在线观看| 欧美一个色资源| 丁香婷婷综合激情五月色| 亚洲美女视频在线观看| 欧美一区二区三区四区高清| 国产精一区二区三区| 亚洲精品写真福利| 日韩欧美国产不卡| 成人黄色网址在线观看| 亚洲国产精品尤物yw在线观看| 日韩午夜激情免费电影| 成人a免费在线看| 亚洲午夜在线电影| 精品精品国产高清a毛片牛牛| 国产69精品久久777的优势| 亚洲午夜电影在线| 久久久久久久免费视频了| 色天使色偷偷av一区二区| 人人爽香蕉精品| 国产精品久久久久久久久晋中| 欧美三级日韩三级| 成人激情电影免费在线观看| 日本不卡一区二区三区| 国产精品你懂的在线欣赏| 亚洲精选免费视频| 久久天堂av综合合色蜜桃网| 亚洲高清一区二区三区| 欧美在线免费播放| 一区二区三区精品视频| av电影一区二区| 国产精品乱码妇女bbbb| 成人免费看片app下载| 国产精品国产三级国产普通话99| 国产乱色国产精品免费视频| 国产在线精品一区二区不卡了| 亚洲国产精品影院| 国产日产欧美一区| 日韩女优av电影在线观看| 在线免费亚洲电影| 成人国产精品视频| 精品在线视频一区| 日韩精品久久理论片| 一区二区三区在线观看动漫| 欧美激情综合在线| 久久先锋影音av鲁色资源网| 7777精品久久久大香线蕉| 欧美专区日韩专区| 色婷婷av一区二区三区gif| 成人午夜视频在线观看| 国产一区二区三区免费看| 麻豆91精品视频| 亚洲成人高清在线| 亚洲一区二区黄色| 亚洲资源中文字幕| 亚洲综合免费观看高清完整版在线 | 久久精品噜噜噜成人88aⅴ| 亚洲综合清纯丝袜自拍| 依依成人综合视频| 亚洲一级在线观看| 亚洲综合激情另类小说区| 亚洲精品乱码久久久久久久久| 国产精品久久久久久久久搜平片 | 成人av在线影院| 国产mv日韩mv欧美| www.欧美日韩| zzijzzij亚洲日本少妇熟睡| 成人性生交大片| 91浏览器在线视频| 欧美刺激午夜性久久久久久久| 另类小说视频一区二区| 国产精品小仙女| 视频在线在亚洲| 亚洲三级小视频| 日韩美女精品在线| 亚洲激情av在线| 亚洲男人的天堂一区二区| 亚洲天堂2016| 亚洲激情五月婷婷| 亚洲国产日日夜夜| 天天综合色天天综合色h| 亚洲一区二区偷拍精品| av网站一区二区三区| 91免费版在线| 欧美久久一区二区| 欧美变态tickle挠乳网站| 国产亚洲欧美在线| 自拍偷拍国产精品| 无吗不卡中文字幕| 麻豆精品久久精品色综合| 国内成人自拍视频| 91视频www| 欧美电影免费观看高清完整版| 国产欧美精品在线观看| 一区二区三区在线免费视频| 日韩精品免费专区| 国产乱妇无码大片在线观看| 波多野结衣在线aⅴ中文字幕不卡| 欧洲色大大久久| 精品国产乱码久久久久久免费| 亚洲欧美日韩人成在线播放| 久久精品国内一区二区三区| 99视频一区二区| 日韩一级黄色片| 日韩理论片网站| 国内成人精品2018免费看| 色噜噜夜夜夜综合网| 精品国产91乱码一区二区三区| 国产精品理论片在线观看| 日本亚洲欧美天堂免费| 91在线视频免费观看| 精品日韩在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 蜜桃一区二区三区四区| 99国产精品99久久久久久| 日韩欧美亚洲一区二区| 亚洲精品高清在线观看| 国产麻豆视频精品| 制服丝袜亚洲网站| 一区二区三区四区国产精品| 国产成人啪免费观看软件| 欧美一区二区视频网站| 一区二区三区蜜桃网| www.亚洲人| 2020国产精品| 乱一区二区av| 7777精品伊人久久久大香线蕉超级流畅| 国产精品国产精品国产专区不片 | 欧美成人官网二区| 日韩高清在线不卡| 在线观看一区二区视频| 国产精品国产三级国产| 国产成人一级电影| 欧美成人女星排名| 男男成人高潮片免费网站| 欧美性一二三区| 亚洲资源在线观看| 欧美三级蜜桃2在线观看| ㊣最新国产の精品bt伙计久久| 国产激情视频一区二区三区欧美 | 日韩欧美中文字幕公布| 香蕉影视欧美成人| 欧美丰满一区二区免费视频| 五月天中文字幕一区二区|