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

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

?? ospf_vs_lib.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* ospf_vs_lib.c - ospf virtual stack management library *//* Copyright 2000-2003 Wind River Systems, Inc. *//*modification history--------------------02c,02jun03,ram Changed native memory usage to OSPF memory partition02b,29may03,agi Modified RWOS calls to OSPF calls as part of RWOS removal 02a,08oct02,agi Fixed empty file compiler warning02,17sep01,kc  Moved ospfConfigurationTableInit() from ospf_init.c.01,07mar01jkw	 written.*//*DESCRIPTIONThis module implements the framework for OSPF Virtual Stacks.  Each stack isrepresented by an OSPF_GLOBAL_DATA structure defined intarget/src/wrn/ospf/ospf_vs_data.h.  Please see that file for informationon particular elements of that data structure.The system is an array of pointers to these structures stored in vsOspfTbl andindexed by an integer from 0 to OSPF_VSID_MAX.  There is a special stack, referredto as the management stack, which is defined as VS_MGMT_STACK_OSPF.  This isdefined in target/src/wrn/ospf/ospf_vs_lib.h.For tasks calling into the stack we provide a current Ospf Virtual Stacknumber concept via a task variable called myTaskNum.  This variable can begotten or set via a set of routines in this module.  Routines called in thecontext of a task (though NEVER tNetTask) it is possible to reference elementsof the stack's virtual stack like this:.CSospfVsTbl[myTaskNum]->stackGlobalYouWantToLookAt*//* this include is here to fix the "empty file" compiler warning */#include "vxWorks.h"/* * This huge ifdef means that the file gets run through the compiler but is * empty in the case where we're building the stack without  * __OSPF_VIRTUAL_STACK__ support. */#ifdef __OSPF_VIRTUAL_STACK__/* includes */#include "ospf_vs_lib.h"#include "ospf_vs_data.h"/* defines *//* globals */int myStackNum = 0; /* Task local stack number. */OSPF_GLOBAL_DATA* ospfVsTbl[OSPF_VSID_MAX];SEM_ID ospfVsTblLock;OSPF_VSID mgmtStackId;/********************************************************************************* ospfVirtualStackLibInit - initialize the Ospf Virtual Stack system** This routine initializes all the global data required by the ospf virtual stack* system.** RETURNS: OK or ERROR if any resources are unavailable.**/STATUS ospfVirtualStackLibInit    (    )    {    int count;    /*     * Create a semaphore to protect our table.     */    ospfVsTblLock = semBCreate(SEM_Q_PRIORITY, SEM_FULL);    if (ospfVsTblLock == NULL)        return (ERROR);    for (count = 0; count < OSPF_VSID_MAX; count++)        {        ospfVsTbl[count] = NULL;        }    return (OK);    }/********************************************************************************* ospfVirtualStackCreate - creates an instance of an ospf virtual stack** This routine creates an instance of a Ospf Virtual Stack and returns a pointer* to the OSPF_VSID on successful completion.  Once this routine returns the* desired initialization sequence may be called to start the appropriate* protocols and initialize the network data structures.** The stack index (i.e.  0 1 2 ...) is assigned.** RETURNS: OK or ERROR. If ERROR is returned the <pOSPF_VSID> contents are* not valid.**/STATUS ospfVirtualStackCreate    (    OSPF_VSID* pOSPF_VSID 		/* Buffer for storing virtual stack identifier */    )    {    int ospfVsIndex, i;    char tempName[OSPF_VS_NAME_MAX + 1];    /* Lock out access until creation is complete or error is returned. */    semTake(ospfVsTblLock, WAIT_FOREVER);    /* Find the first empty slot. */    for (ospfVsIndex = 0; ospfVsIndex < OSPF_VSID_MAX; ospfVsIndex++)        {        if (ospfVsTbl[ospfVsIndex] == NULL)            break; /* Hey, we found one! */        }    if (ospfVsIndex == OSPF_VSID_MAX)        {        semGive(ospfVsTblLock);        return (ERROR);        }        sprintf(tempName, "%d", ospfVsIndex);    /* null-terminate it, just in case... */    *(tempName + OSPF_VS_NAME_MAX) = EOS;    /* Check that a stack with the same name doesn't already exist */    for (i = 0; i < OSPF_VSID_MAX; i++)        {        if (ospfVsTbl[i] == NULL)  /* empty slot */            continue;        if (strcmp(ospfVsTbl[i]->pName, tempName) == 0)            {            semGive(ospfVsTblLock);            return ERROR;            }        }    /* Allocate our global structure.  */    *pOSPF_VSID = ospfVsTbl[ospfVsIndex] = (OSPF_GLOBAL_DATA *)buffer_malloc        (sizeof(OSPF_GLOBAL_DATA));    if (ospfVsTbl[ospfVsIndex] == NULL)        {        semGive(ospfVsTblLock);        return (ERROR);        }    /* Clear out the structure to NULL */    memset ((char *)*pOSPF_VSID,0, sizeof(OSPF_GLOBAL_DATA));    /*     * Make the name the OSPF VS number.     */    ospfVsTbl[ospfVsIndex]->pName = (char *)&ospfVsTbl[ospfVsIndex]->name;    memcpy(tempName, ospfVsTbl[ospfVsIndex]->pName, sizeof(tempName));    semGive(ospfVsTblLock);    return (OK);    }/********************************************************************************* ospfVirtualStackInit - initialize an ospf virtual stack** This routine performs the default initialization of an OSPF Virtual stack* created with the ospfVirtualStackCreate() routine. When this routine* completes, the OSPF protocol will be initialized and* the corresponding data structures for the stack will be valid.** RETURNS: OK, or ERROR if initialization fails.*/STATUS ospfVirtualStackInit    (    OSPF_VSID ospfVsId	  /* Stack identifier from ospfVirtualStackCreate() routine */    )    {    int ospfVsIndex;     /* Verify stack identifier. Exit if not found. */    semTake(ospfVsTblLock, WAIT_FOREVER);    for (ospfVsIndex = 0; ospfVsIndex < OSPF_VSID_MAX; ospfVsIndex++)        if (ospfVsTbl[ospfVsIndex] == ospfVsId)            break;    if (ospfVsIndex == OSPF_VSID_MAX)        {        semGive(ospfVsTblLock);        return (ERROR);        }    semGive(ospfVsTblLock);    return (OK);    }/********************************************************************************* ospfVirtualStackDelete - delete an ospf virtual stack** This routine deletes the ospf virtual stack referenced by the OSPF_VSID passed to it.** RETURNS: OK or ERROR if the OSPF_VSID passed to the call was in some way invalid**/STATUS ospfVirtualStackDelete    (    OSPF_VSID ospfVsId /* VID returned by virtualStackCreate */    )    {    int ospfVsIndex;    semTake(ospfVsTblLock, WAIT_FOREVER);    for (ospfVsIndex = 0; ospfVsIndex < OSPF_VSID_MAX; ospfVsIndex++)        if (ospfVsTbl[ospfVsIndex] == ospfVsId)            break; /* Hey, we found it! */    /* Check that we did find it. */    if (ospfVsIndex == OSPF_VSID_MAX)        {        semGive(ospfVsTblLock);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美日本乱码一线二线| 日韩欧美激情一区| 成人蜜臀av电影| 国产真实乱对白精彩久久| 美女视频一区在线观看| 日本欧美肥老太交大片| 欧美性xxxxxxxx| 欧美三级视频在线观看| 色老综合老女人久久久| 91视频观看免费| 91免费国产在线| 91福利在线免费观看| 日本乱人伦一区| 欧美性淫爽ww久久久久无| 欧美亚洲综合在线| 欧美日韩亚州综合| 欧美一卡在线观看| 精品久久久久久久久久久久包黑料| 精品动漫一区二区三区在线观看| 精品国产91久久久久久久妲己| 久久品道一品道久久精品| 久久久国产精品午夜一区ai换脸| 国产亚洲精品7777| 亚洲男人天堂一区| 午夜天堂影视香蕉久久| 免费精品视频在线| 国产精品亚洲人在线观看| 成人免费高清视频在线观看| 91传媒视频在线播放| 欧美日韩精品二区第二页| 欧美成人国产一区二区| 国产精品久久看| 亚洲国产日韩综合久久精品| 麻豆精品视频在线| 成人性色生活片免费看爆迷你毛片| 97久久精品人人澡人人爽| 欧美在线制服丝袜| 欧美xxxxx裸体时装秀| 国产精品伦理一区二区| 亚洲国产aⅴ成人精品无吗| 日韩电影在线一区| 成人一区二区视频| 欧美性生活久久| 久久综合九色综合欧美就去吻 | 欧美一区二区三区在线看| 久久蜜桃香蕉精品一区二区三区| 亚洲品质自拍视频| 久久97超碰色| 91美女片黄在线观看| 日韩亚洲国产中文字幕欧美| 日本一区二区久久| 天堂av在线一区| 国产传媒欧美日韩成人| 欧美精品久久99久久在免费线 | 国产精品免费丝袜| 亚洲电影一级片| 国产精品99久| 欧美军同video69gay| 国产精品免费免费| 男女男精品视频| 91一区在线观看| 日韩av一二三| 一本到高清视频免费精品| 日韩欧美电影一二三| 亚洲欧美韩国综合色| 精品一区二区影视| 欧美色偷偷大香| 国产欧美在线观看一区| 蜜臀久久99精品久久久久久9| 91香蕉视频污| 久久九九全国免费| 老司机精品视频一区二区三区| 色婷婷精品久久二区二区蜜臂av | 久久久久久99久久久精品网站| 国产精品丝袜在线| 日韩电影在线观看网站| 色哟哟精品一区| 国产日韩欧美不卡在线| 蜜桃久久久久久| 欧美三级电影网站| 一级女性全黄久久生活片免费| 国产精品18久久久久久久久 | 国产精品一级在线| 欧美日韩久久久久久| 亚洲一本大道在线| eeuss影院一区二区三区| av电影在线观看不卡| 亚洲女与黑人做爰| 中文字幕av一区二区三区高 | 久久久久久亚洲综合影院红桃| 亚洲福利一区二区| 99精品视频一区二区| 国产偷v国产偷v亚洲高清| 欧美aaaaa成人免费观看视频| 欧美日韩成人在线一区| 一区二区三区免费在线观看| 久久丝袜美腿综合| 麻豆精品精品国产自在97香蕉| 欧美日韩精品欧美日韩精品一综合| 日韩毛片精品高清免费| 99re这里只有精品首页| 亚洲精品国产一区二区精华液| 91麻豆免费视频| 一区二区三区四区激情 | 亚洲国产欧美在线人成| 99久久国产综合精品女不卡| 亚洲激情五月婷婷| 91.com在线观看| 精品无人码麻豆乱码1区2区| 久久在线观看免费| 成人免费毛片片v| 亚洲已满18点击进入久久| 26uuu亚洲婷婷狠狠天堂| 九九热在线视频观看这里只有精品 | 国产亚洲一二三区| 91在线视频18| 久久国产夜色精品鲁鲁99| 国产欧美一区二区三区在线看蜜臀| jlzzjlzz亚洲日本少妇| 午夜精品成人在线| 国产三区在线成人av| 精品久久久久久久一区二区蜜臀| 懂色av一区二区三区免费看| 国产一区二区三区综合| 国产精品久久久久一区| 亚洲欧美色图小说| 国产精品视频在线看| 日韩一区二区三区av| 国产精品一区免费视频| 欧美成人一区二区三区片免费 | 国产日韩三级在线| 亚洲愉拍自拍另类高清精品| 成人精品在线视频观看| 国产成人午夜精品5599| 亚洲男人的天堂av| 欧美日韩国产首页| 奇米精品一区二区三区在线观看一| 日韩精品中午字幕| 成人理论电影网| 亚洲综合色区另类av| 欧美一区二区三区免费观看视频| 韩国精品一区二区| 综合久久国产九一剧情麻豆| 欧美色中文字幕| 色综合久久九月婷婷色综合| 国产高清一区日本| 激情国产一区二区| 久久福利视频一区二区| 毛片av一区二区| 韩国女主播成人在线| 精品午夜一区二区三区在线观看| 天天综合日日夜夜精品| 日韩电影在线免费看| 免费av网站大全久久| 久久99精品网久久| 韩国v欧美v亚洲v日本v| 国产99久久久国产精品| 粉嫩蜜臀av国产精品网站| jlzzjlzz亚洲日本少妇| 91成人国产精品| 欧美一区二区在线播放| 久久免费的精品国产v∧| 国产精品网友自拍| 亚洲欧美另类综合偷拍| 午夜视频久久久久久| 老司机精品视频导航| 91在线免费看| 欧美一区二区三区啪啪| 久久久99久久| 五月婷婷色综合| jizzjizzjizz欧美| 欧美日韩国产大片| 亚洲永久精品大片| 国内精品国产成人| 欧美一区二区视频免费观看| 日日嗨av一区二区三区四区| 欧美日韩精品一区二区三区蜜桃| 亚洲精品国产精华液| 一二三区精品视频| 日本中文字幕一区二区视频| 久久精品国产第一区二区三区| 99亚偷拍自图区亚洲| 欧美成人一区二区| 欧美大片顶级少妇| 91九色02白丝porn| 亚洲va天堂va国产va久| 精品婷婷伊人一区三区三| 不卡视频一二三四| 国产精品538一区二区在线| 日本伊人色综合网| 亚洲午夜在线电影| 亚洲日本一区二区三区| 日本一区二区高清| 国产亚洲综合在线| 精品国产区一区| 欧美成人国产一区二区| 日韩视频一区在线观看| 欧美日韩成人在线| 欧美巨大另类极品videosbest| 日本精品一区二区三区高清|