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

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

?? ixethdb_p.h

?? 友善mini2440嵌入式
?? H
?? 第 1 頁 / 共 2 頁
字號:
/** * @file IxEthDB_p.h * * @brief Private MAC learning API * * @par * IXP400 SW Release version 2.0 * * -- Copyright Notice -- * * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. * * @par * 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. Neither the name of the Intel Corporation nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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. * * @par * -- End of Copyright Notice -- */#ifndef IxEthDB_p_H#define IxEthDB_p_H#include <IxTypes.h>#include <IxOsal.h>#include <IxEthDB.h>#include <IxNpeMh.h>#include <IxEthDBPortDefs.h>#include "IxEthDBMessages_p.h"#include "IxEthDBLog_p.h"#if (CPU==SIMSPARCSOLARIS)/* when running unit tests intLock() won't protect the event queue so we lock it manually */#define TEST_FIXTURE_LOCK_EVENT_QUEUE   { ixOsalMutexLock(&eventQueueLock, IX_OSAL_WAIT_FOREVER); }#define TEST_FIXTURE_UNLOCK_EVENT_QUEUE { ixOsalMutexUnlock(&eventQueueLock); }#else#define TEST_FIXTURE_LOCK_EVENT_QUEUE   /* nothing */#define TEST_FIXTURE_UNLOCK_EVENT_QUEUE /* nothing */#endif /* #if(CPU==SIMSPARCSOLARIS) */#ifndef IX_UNIT_TEST#define TEST_FIXTURE_INCREMENT_DB_CORE_ACCESS_COUNTER /* nothing */#define TEST_FIXTURE_MARK_OVERFLOW_EVENT              /* nothing */#elseextern int dbAccessCounter;extern int overflowEvent;#define TEST_FIXTURE_INCREMENT_DB_CORE_ACCESS_COUNTER { dbAccessCounter++; }#define TEST_FIXTURE_MARK_OVERFLOW_EVENT              { overflowEvent = 1; }#endif/* code readability markers */#define __mempool__      /* memory pool marker */#define __lock__         /* hash write locking marker */#define __smartpointer__ /* smart pointer marker - warning: use only clone() when duplicating! */#define __alignment__    /* marker for data used only as alignment zones *//* constants */#define IX_ETH_DB_NPE_TIMEOUT (100) /* NPE response timeout, in ms *//** * number of hash table buckets * it should be at least 8x the predicted number of entries for performance * each bucket needs 8 bytes */#define NUM_BUCKETS (8192)/** * number of hash table buckets to preload when incrementing bucket iterator * = two cache lines */#define IX_ETHDB_CACHE_LINE_AHEAD (2)#define IX_ETHDB_BUCKETPTR_AHEAD  ((IX_ETHDB_CACHE_LINE_AHEAD * IX_OSAL_CACHE_LINE_SIZE)/sizeof(void *))#define IX_ETHDB_BUCKET_INDEX_MASK   (((IX_OSAL_CACHE_LINE_SIZE)/sizeof(void *)) - 1)/* locks */#define MAX_LOCKS (20) /**< maximum number of locks used simultaneously, do not tamper with *//* learning tree constants */#define INITIAL_ELT_SIZE    (8)                              /**< initial byte size of tree (empty unused root size) */#define MAX_ELT_SIZE        (512)                            /**< maximum number of entries (includes unused root) */#define MAX_GW_SIZE         (32)                             /**< maximum number of gateway entries (including unused root) */#define MAX_FW_SIZE         (32)                             /**< maximum number of firewall entries (including unused root) */#define ELT_ENTRY_SIZE      (8)                              /**< entry size, in bytes */#define ELT_ROOT_OFFSET     (ELT_ENTRY_SIZE)                 /**< tree root offset, in bytes - node preceeding root is unused */#define FULL_ELT_BYTE_SIZE  (MAX_ELT_SIZE * ELT_ENTRY_SIZE)  /**< full size of tree, in bytes, including unused root */#define FULL_GW_BYTE_SIZE   (MAX_GW_SIZE * ELT_ENTRY_SIZE)   /**< full size of gateway list, in bytes, including unused root */#define FULL_FW_BYTE_SIZE   (MAX_FW_SIZE * ELT_ENTRY_SIZE)   /**< full size of firewall table, in bytes, including unused root *//* maximum size of the VLAN table: * 4096 bits (one per VLAN) * 8 bits in one byte * interleaved VLAN membership and VLAN TTI (*2) */#define FULL_VLAN_BYTE_SIZE (4096 / 8 * 2)/* upper 9 bits used as set index, lower 3 bits as byte index */#define VLAN_SET_OFFSET(vlanID) ((vlanID) >> 3)#define VLAN_SET_MASK(vlanID)   (0x7 - ((vlanID) & 0x7))/* Update zone definitions */#define NPE_TREE_MEM_SIZE (4096) /* ((511 entries + 1 unused root) * 8 bytes/entry) *//* check the above value, we rely on 4k */#if NPE_TREE_MEM_SIZE != 4096    #error NPE_TREE_MEM_SIZE is not defined to 4096 bytes!#endif/* Size Filtering limits (Jumbo frame filtering) */#define IX_ETHDB_MAX_FRAME_SIZE     65535 /* other ports than NPE ports */#define IX_ETHDB_MIN_FRAME_SIZE         1 /* other ports than NPE ports */#define IX_ETHDB_MAX_NPE_FRAME_SIZE 16320 /* NPE ports firmware limit */#define IX_ETHDB_MIN_NPE_FRAME_SIZE     1 /* NPE ports firmware limit */#define IX_ETHDB_DEFAULT_FRAME_SIZE  1522/* memory management pool sizes  *//* * Note: * * NODE_POOL_SIZE controls the maximum number of elements in the database at any one time. * It should be large enough to cover all the search trees of all the ports simultaneously. * * MAC_POOL_SIZE should be higher than NODE_POOL_SIZE by at least the total number of MAC addresses * possible to be held at any time in all the ports. * * TREE_POOL_SIZE should follow the same guideline as for MAC_POOL_SIZE. * * The database structure described here (2000/4000/4000) is enough for two NPEs holding at most 511 * entries each plus one PCI NIC holding at most 900 entries. */#define NODE_POOL_SIZE (2000) /**< number of HashNode objects - also master number of elements in the database; each entry has 16 bytes */#define MAC_POOL_SIZE  (4000) /**< number of MacDescriptor objects; each entry has 28 bytes */#define TREE_POOL_SIZE (4000) /**< number of MacTreeNode objects; each entry has 16 bytes *//* retry policies */#define BUSY_RETRY_ENABLED (TRUE)  /**< if set to TRUE the API will retry automatically calls returning BUSY */#define FOREVER_RETRY      (TRUE)  /**< if set to TRUE the API will retry forever BUSY calls */#define MAX_RETRIES        (400)   /**< upper retry limit - used only when FOREVER_RETRY is FALSE */#define BUSY_RETRY_YIELD   (5)     /**< ticks to yield for every failed retry *//* event management */#define EVENT_QUEUE_SIZE       (500) /**< size of the sink collecting events from the Message Handler FIFO */#define EVENT_PROCESSING_LIMIT (100)  /**< batch processing control size (how many events are extracted from the queue at once) *//* MAC descriptors */#define STATIC_ENTRY  (TRUE)#define DYNAMIC_ENTRY (FALSE)/* age reset on next maintenance - incrementing by 1 will reset to 0 */#define AGE_RESET (0xFFFFFFFF)/* dependency maps */#define EMPTY_DEPENDENCY_MAP (0)/* trees */#define RIGHT (1)#define LEFT  (-1)/* macros */#define MIN(a, b) ((a) < (b) ? (a) : (b))#define IX_ETH_DB_CHECK_PORT_EXISTS(portID) \{ \    if ((portID) >= IX_ETH_DB_NUMBER_OF_PORTS) \    { \        return IX_ETH_DB_INVALID_PORT; \    } \}#define IX_ETH_DB_CHECK_PORT_INITIALIZED(portID) \{ \    if ((portID) >= IX_ETH_DB_NUMBER_OF_PORTS) \    { \        return IX_ETH_DB_INVALID_PORT; \    } \    else \    { \        if (!ixEthDBPortInfo[portID].initialized) \        { \            return IX_ETH_DB_PORT_UNINITIALIZED; \        } \    } \}/* single NPE check */#define IX_ETH_DB_CHECK_SINGLE_NPE(portID) \    if (ixEthDBSingleEthNpeCheck(portID) != IX_ETH_DB_SUCCESS) \    { \        WARNING_LOG("EthDB: port ID %d is unavailable\n",(UINT32) portID); \        \        return IX_ETH_DB_INVALID_PORT; \    }/* feature check */#define IX_ETH_DB_CHECK_FEATURE(portID, feature) \    if ((ixEthDBPortInfo[portID].featureStatus & feature) == 0) \    { \        return IX_ETH_DB_FEATURE_UNAVAILABLE; \    }/* busy retrying */#define BUSY_RETRY(functionCall) \    { \        UINT32 retries = 0; \        IxEthDBStatus br_result; \        \        while ((br_result = functionCall) == IX_ETH_DB_BUSY \            && BUSY_RETRY_ENABLED && (FOREVER_RETRY || ++retries < MAX_RETRIES)) { ixOsalSleep(BUSY_RETRY_YIELD); }; \        \        if ((!FOREVER_RETRY && retries == MAX_RETRIES) || (br_result == IX_ETH_DB_FAIL)) \        {\            ERROR_LOG("Ethernet Learning Database Error: BUSY_RETRY failed at %s:%d\n", __FILE__, __LINE__); \        }\    }#define BUSY_RETRY_WITH_RESULT(functionCall, brwr_result) \    { \        UINT32 retries = 0; \        \        while ((brwr_result = functionCall) == IX_ETH_DB_BUSY \            && BUSY_RETRY_ENABLED && (FOREVER_RETRY || ++retries < MAX_RETRIES)) { ixOsalSleep(BUSY_RETRY_YIELD); }; \        \        if ((!FOREVER_RETRY && retries == MAX_RETRIES) || (brwr_result == IX_ETH_DB_FAIL)) \        {\            ERROR_LOG("Ethernet Learning Database Error: BUSY_RETRY_WITH_RESULT failed at %s:%d\n", __FILE__, __LINE__); \        }\    }/* iterators */#define IS_ITERATOR_VALID(iteratorPtr) ((iteratorPtr)->node != NULL)/* dependency port maps *//* Warning: if port indexing starts from 1 replace (portID) with (portID - 1) in DEPENDENCY_MAP (and make sure IX_ETH_DB_NUMBER_OF_PORTS is big enough) *//* gives an empty dependency map */#define SET_EMPTY_DEPENDENCY_MAP(map)      { int i = 0; for (; i < 32 ; i++) map[i] = 0; }#define IS_EMPTY_DEPENDENCY_MAP(result, map)       { int i = 0 ; result = TRUE; for (; i < 32 ; i++) if (map[i] != 0) { result = FALSE; break; }}/** * gives a map consisting only of 'portID' */#define SET_DEPENDENCY_MAP(map, portID)    {SET_EMPTY_DEPENDENCY_MAP(map); map[portID >> 3] = 1 << (portID & 0x7);}/** * gives a map resulting from joining map1 and map2 */#define JOIN_MAPS(map, map1, map2)         { int i = 0; for (; i < 32 ; i++) map[i] = map1[i] | map2[i]; }/** * gives the map resulting from joining portID and map */#define JOIN_PORT_TO_MAP(map, portID)      { map[portID >> 3] |= 1 << (portID & 0x7); }/** * gives the map resulting from excluding portID from map */#define EXCLUDE_PORT_FROM_MAP(map, portID) { map[portID >> 3] &= ~(1 << (portID & 0x7); }/** * returns TRUE if map1 is a subset of map2 and FALSE otherwise */#define IS_MAP_SUBSET(result, map1, map2)  { int i = 0; result = TRUE; for (; i < 32 ; i++) if ((map1[i] | map2[i]) != map2[i]) result = FALSE; }/** * returns TRUE is portID is part of map and FALSE otherwise */#define IS_PORT_INCLUDED(portID, map)      ((map[portID >> 3] & (1 << (portID & 0x7))) != 0)/** * returns the difference between map1 and map2 (ports included in map1 and not included in map2) */#define DIFF_MAPS(map, map1, map2)         { int i = 0; for (; i < 32 ; i++) map[i] = map1[i] ^ (map1[i] & map2[i]); }/** * returns TRUE if the maps collide (have at least one port in common) and FALSE otherwise */#define MAPS_COLLIDE(result, map1, map2)   { int i = 0; result = FALSE; for (; i < 32 ; i++) if ((map1[i] & map2[i]) != 0) result = TRUE; }/* size (number of ports) of a dependency map */#define GET_MAP_SIZE(map, size)            { int i = 0, b = 0; size = 0; for (; i < 32 ; i++) { char y = map[i]; for (; b < 8 && (y >>= 1); b++) size += (y & 1); }}/* copy map2 into map1 */#define COPY_DEPENDENCY_MAP(map1, map2)    { memcpy (map1, map2, sizeof (map1)); }/* definition of a port map size/port number which cannot be reached (we support at most 32 ports) */#define MAX_PORT_SIZE   (0xFF)#define MAX_PORT_NUMBER (0xFF)#define IX_ETH_DB_CHECK_REFERENCE(ptr)   { if ((ptr) == NULL) { return IX_ETH_DB_INVALID_ARG; } }#define IX_ETH_DB_CHECK_MAP(portID, map) { if (!IS_PORT_INCLUDED(portID, map)) { return IX_ETH_DB_INVALID_ARG; } }/* event queue macros */#define EVENT_QUEUE_WRAP(offset)            ((offset) >= EVENT_QUEUE_SIZE ? (offset) - EVENT_QUEUE_SIZE : (offset))#define CAN_ENQUEUE(eventQueuePtr)          ((eventQueuePtr)->length < EVENT_QUEUE_SIZE)#define QUEUE_HEAD(eventQueuePtr)           (&(eventQueuePtr)->queue[EVENT_QUEUE_WRAP((eventQueuePtr)->base + (eventQueuePtr)->length)])#define QUEUE_TAIL(eventQueuePtr)           (&(eventQueuePtr)->queue[(eventQueuePtr)->base])#define PUSH_UPDATE_QUEUE(eventQueuePtr)    { (eventQueuePtr)->length++; }#define SHIFT_UPDATE_QUEUE(eventQueuePtr) \        { \            (eventQueuePtr)->base = EVENT_QUEUE_WRAP((eventQueuePtr)->base + 1); \            (eventQueuePtr)->length--; \        }#define RESET_QUEUE(eventQueuePtr) \    { \        (eventQueuePtr)->base   = 0; \        (eventQueuePtr)->length = 0; \    }/* node stack macros - used to browse a tree without using a recursive function */#define NODE_STACK_INIT(stack)               { (stack)->nodeCount = 0; }#define NODE_STACK_PUSH(stack, node, offset) { (stack)->nodes[(stack)->nodeCount] = (node); (stack)->offsets[(stack)->nodeCount++] = (offset); }#define NODE_STACK_POP(stack, node, offset)  { (node) = (stack)->nodes[--(stack)->nodeCount]; offset = (stack)->offsets[(stack)->nodeCount]; }#define NODE_STACK_NONEMPTY(stack)           ((stack)->nodeCount != 0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级三级三级爽爽爽| 久久精品国产免费| 国产成人啪免费观看软件| 日本视频中文字幕一区二区三区| 亚洲精品日产精品乱码不卡| 国产精品久线在线观看| 亚洲欧洲成人精品av97| 亚洲欧洲av在线| 亚洲精品国产无套在线观 | 亚洲视频免费在线观看| 国产精品网站在线播放| 欧美日韩在线播放一区| 欧美日韩国产一级片| 3d动漫精品啪啪一区二区竹菊| 国产精品一区二区久久不卡| 国产在线精品一区二区夜色| 久久99精品国产麻豆不卡| 久久99国产精品免费| 亚洲精品国产一区二区三区四区在线 | 欧美色网一区二区| 欧美年轻男男videosbes| 高清beeg欧美| 毛片av一区二区| 国产精品一区二区三区网站| 日韩国产精品大片| 韩国女主播成人在线| 亚洲高清在线视频| 亚洲色图一区二区| 日本一区二区三区高清不卡| 亚洲国产成人午夜在线一区| 一区二区三区日韩精品视频| 国产欧美一区二区三区在线看蜜臀| 国产精品嫩草99a| 午夜国产精品影院在线观看| 久久成人18免费观看| 奇米777欧美一区二区| 亚洲一二三级电影| 国产精品综合二区| 欧美在线观看一二区| 精品成人在线观看| 久久久国产午夜精品| 亚洲一区二区三区四区在线观看| 精品夜夜嗨av一区二区三区| 91在线你懂得| 色婷婷综合久久久久中文 | 伊人开心综合网| 极品美女销魂一区二区三区| 日本不卡在线视频| 91色视频在线| 久久久久久久综合狠狠综合| 一区二区三区国产豹纹内裤在线| 亚洲蜜臀av乱码久久精品蜜桃| 蜜臀久久99精品久久久久宅男| 91啪在线观看| 久久精品一区四区| 国产精品黄色在线观看| 亚洲色图欧美偷拍| 狠狠狠色丁香婷婷综合激情| 欧美四级电影在线观看| 中文字幕中文在线不卡住| 美国十次了思思久久精品导航| 欧美三级午夜理伦三级中视频| 67194成人在线观看| 欧美videos大乳护士334| 久久蜜桃av一区精品变态类天堂| 亚洲aⅴ怡春院| 欧美在线综合视频| 亚洲精品高清在线| 另类的小说在线视频另类成人小视频在线| 免费欧美在线视频| 欧美精品一二三| 亚洲成人综合在线| 欧美午夜在线观看| 国产亚洲欧美色| 国产麻豆精品久久一二三| 色婷婷激情一区二区三区| 日韩一级二级三级| 蜜臀av一区二区在线免费观看| 丁香六月综合激情| 欧美剧情片在线观看| 国产在线精品一区二区| 精品国产乱码91久久久久久网站| 中文字幕一区免费在线观看| 国产成人综合自拍| 69堂成人精品免费视频| 日韩av电影一区| 久久在线免费观看| 中文字幕精品综合| 蜜臀久久99精品久久久久宅男| 911精品国产一区二区在线| 国产精品久久久久婷婷| 一区二区三区电影在线播| 成人精品国产福利| 麻豆传媒一区二区三区| 中国色在线观看另类| 欧美一级高清片| 欧美性生活大片视频| 久久精品99国产精品日本| 精品少妇一区二区三区日产乱码| 免费成人美女在线观看| 亚洲一区二区欧美激情| 中文字幕一区二区三区色视频| 久久亚洲影视婷婷| 不卡视频一二三| 国产成人一区在线| 亚洲一区二区高清| 亚洲欧美日韩成人高清在线一区| 日本一区二区三区视频视频| 91丝袜高跟美女视频| 成人网在线免费视频| 国产露脸91国语对白| 久久疯狂做爰流白浆xx| 免费在线看成人av| 免费成人你懂的| 久久国产麻豆精品| 国产自产v一区二区三区c| 日韩av一级片| 国产精品家庭影院| 综合av第一页| 亚洲男人的天堂在线aⅴ视频| 中文字幕一区二区三区在线观看| 91久久精品一区二区二区| 99久精品国产| 在线观看欧美精品| 欧美日韩三级一区二区| 国产不卡在线播放| 午夜a成v人精品| 男人操女人的视频在线观看欧美| 美女脱光内衣内裤视频久久网站| 美女免费视频一区| 国产一区二区三区| kk眼镜猥琐国模调教系列一区二区| 不卡的av电影| 在线观看区一区二| 不卡一区二区在线| 欧美亚洲一区二区在线观看| 欧美日韩国产综合久久| 欧美一级xxx| 一本大道av伊人久久综合| 欧美日韩综合一区| 91免费版在线| 欧美色图一区二区三区| 日韩欧美一二三| 中文字幕在线观看一区| 亚洲国产综合91精品麻豆| 亚洲日本va午夜在线影院| 亚洲成人先锋电影| 国产伦精品一区二区三区视频青涩 | 欧美老女人在线| 欧美成人aa大片| 中文字幕在线一区免费| 亚洲一区二区欧美激情| 亚洲乱码国产乱码精品精的特点| 亚洲一区二区精品3399| 亚洲一区二区黄色| 国产精品99久久久久久久女警| 色偷偷88欧美精品久久久| av电影在线不卡| 精品国产成人系列| 亚洲一区二区三区四区中文字幕 | 久久久久一区二区三区四区| 91精品免费在线| 亚洲视频在线观看三级| 日韩精品成人一区二区在线| 亚洲国产精品久久久久秋霞影院 | 欧美日韩精品福利| 欧美区视频在线观看| 国产精品系列在线| 亚洲美女淫视频| 国模少妇一区二区三区| 蜜桃av一区二区三区| 欧美最新大片在线看| 国产日韩一级二级三级| 久久久久久毛片| 无码av免费一区二区三区试看 | 国内精品伊人久久久久av影院 | 人妖欧美一区二区| 精品一区中文字幕| 欧美性猛片xxxx免费看久爱| 欧美国产精品一区二区三区| 另类调教123区| 成人三级在线视频| 色悠久久久久综合欧美99| 久久久久久毛片| 精品夜夜嗨av一区二区三区| 欧美日韩国产综合一区二区 | 亚洲桃色在线一区| 亚洲成人自拍网| 一本大道久久a久久综合婷婷| 日本一区二区三区久久久久久久久不| 最新欧美精品一区二区三区| 国产一区二区三区国产| 91官网在线观看| 亚洲免费色视频| 色综合网站在线| 精品日韩欧美在线| 捆绑调教一区二区三区| 日韩欧美国产综合一区| 久久av老司机精品网站导航| 制服丝袜av成人在线看|