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

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

?? riplib.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
* <supplier>        | 0 (FALSE)       | RIP_SUPPLIER* <gateway>         | 0 (FALSE)       | RIP_GATEWAY* <multicast>       | 0 (FALSE)       | RIP_MULTICAST* <version>         | 1               | RIP_VERSION* <timerRate>       | 1               | RIP_TIMER_RATE* <supplyInterval>  | 30              | RIP_SUPPLY_INTERVAL* <expire>          | 180             | RIP_EXPIRE_TIME* <garbage>         | 300             | RIP_GARBAGE_TIME* <authType>        | 1               | RIP_AUTH_TYPE* \te** INTERNAL* This routine creates two tasks, 'tRip' and 'tRipTimer'.  The first is the * main loop of the routing task that monitors the routing port (520) for * updates and request messages. The second task uses a watchdog timer and* signalling semaphore to update the internal RIP routing table. The * 'ripLockSem' blocking semaphore provides any necessary interlocking between * each of the tasks and the user routines that alter the RIP configuration.* * RETURNS: OK; or ERROR, if configuration fails.**/STATUS ripLibInit    (    BOOL supplier,	    /* operate in silent mode? */    BOOL gateway,	    /* act as gateway to the Internet? */    BOOL multicast,	    /* use multicast or broadcast addresses? */    int version,            /* 1 or 2: selects format of outgoing messages */    int timerRate,          /* update frequency for internal routing table */    int supplyInterval,     /* update frequency for neighboring routers */    int expire,             /* maximum interval for renewing learned routes */    int garbage,            /* elapsed time before deleting stale route */    int authType            /* default authentication type to use */    )    {    IMPORT STATUS m2RipInit ();#ifdef VIRTUAL_STACK    if ((vsTbl [myStackNum]->pRipGlobals != NULL) &&        (ripInitFlag))        return (OK);#else    if (ripInitFlag)        return (OK);#endif /* VIRTUAL_STACK */    if (version < 1 || version > 2)        return (ERROR);    if ((version < 2) && (multicast == TRUE))        return (ERROR);        if (timerRate < 1)        return (ERROR);    if (supplyInterval < 1)        return (ERROR);    if (expire < 1)        return (ERROR);    if (garbage < 1)        return (ERROR);#ifdef VIRTUAL_STACK    /* Allocate space for former global variables. */    if (vsTbl[myStackNum]->pRipGlobals == NULL)        {        vsTbl[myStackNum]->pRipGlobals = malloc (sizeof (VS_RIP));        if (vsTbl[myStackNum]->pRipGlobals == NULL)            return (ERROR);        }    bzero ((char *)vsTbl [myStackNum]->pRipGlobals, sizeof (VS_RIP));#else    bzero ((char *)&ripState, sizeof (ripState));#endif /* VIRTUAL_STACK */     /* Set the global state. */    ripState.version = version;    ripState.multicast = multicast;    ripState.timerRate = timerRate;    ripState.supplyInterval = supplyInterval;    ripState.expire = expire;    ripState.garbage = garbage;    ripState.pRouteHook = NULL;    ripFilterFlag = TRUE; 	/* Enable border gateway filtering. */    routedDebug = 0; 		/* Disable debugging messages by default. */    /* Initialize the list of interfaces on which RIP should not be started */    lstInit (&ripIfExcludeList);#ifdef VIRTUAL_STACK    /*     * Assign (former) global variables previously initialized by the compiler.     * Setting 0 is repeated for clarity - the vsLib.c setup zeroes all values.     */   _ripTaskPriority = RIP_TASK_PRIORITY; 		/* ripLib.c */   _ripTaskOptions = RIP_TASK_OPTIONS; 			/* ripLib.c */   _ripTaskStackSize = RIP_TASK_STACK_SIZE; 		/* ripLib.c */   _ripTimerTaskPriority = RIP_TIMER_TASK_PRIORITY; 	/* ripLib.c */   _ripTimerTaskOptions = RIP_TIMER_TASK_OPTIONS; 	/* ripLib.c */   _ripTimerTaskStackSize = RIP_TIMER_TASK_STACK_SIZE; 	/* ripLib.c */   ifnext = &ripIfNet;#endif    /*     * This all has to do with RIP MIB II stuff.     *     * We set a global configuration that all interfaces will have     * at startup time.  SNMP agents can then modify these values     * on a per interface basis.     */    m2RipInit ();    if (version == 1)        ripState.ripConf.rip2IfConfSend = M2_rip2IfConfSend_ripVersion1;    else if (multicast)        ripState.ripConf.rip2IfConfSend = M2_rip2IfConfSend_ripVersion2;    else        ripState.ripConf.rip2IfConfSend = M2_rip2IfConfSend_rip1Compatible;            if (version == 1)        ripState.ripConf.rip2IfConfReceive = M2_rip2IfConfReceive_rip1;    else if (multicast)        ripState.ripConf.rip2IfConfReceive = M2_rip2IfConfReceive_rip2;    else        ripState.ripConf.rip2IfConfReceive = M2_rip2IfConfReceive_rip1OrRip2;    ripState.ripConf.rip2IfConfAuthType = authType;    ripState.ripConf.rip2IfConfStatus = M2_rip2IfConfStatus_valid;    /* Create the monitor task to receive and process RIP messages. */    ripState.ripTaskId = taskSpawn (RIP_TASK, _ripTaskPriority,                                     _ripTaskOptions, _ripTaskStackSize,                                     ripTask, supplier, gateway, multicast, #ifdef VIRTUAL_STACK                                    myStackNum, 0, 0, 0, 0, 0, 0);#else                                    0, 0, 0, 0, 0, 0, 0);#endif    if (ripState.ripTaskId == ERROR)        {#ifdef VIRTUAL_STACK        free (vsTbl[myStackNum]->pRipGlobals);        vsTbl[myStackNum]->pRipGlobals = NULL;#endif        return (ERROR);        }    ripInitFlag = TRUE;    return (OK);    }STATUS ripTask    (    BOOL supplier,    BOOL gateway,    BOOL multicast#ifdef VIRTUAL_STACK    ,    int 	stackNum#endif    )    {    int n, nfd, on;    struct timeval *pTimeout;    struct timeval waittime;    fd_set ibits;    extern STATUS ripLeakHook ();#ifdef VIRTUAL_STACK    register RIP_PKT *query;    /* Assign virtual stack number to access appropriate data structures. */    if (virtualStackNumTaskIdSet (stackNum) == ERROR)        {        if (routedDebug)            logMsg ("Unable to access stack data.\n", 0, 0, 0, 0, 0, 0);        return (ERROR);        }    query = (RIP_PKT *)ripState.packet;#else    register RIP_PKT *query = (RIP_PKT *)ripState.packet;#endif    ripState.msg = (RIP_PKT *)ripState.packet;        /* Fake out getservbyname. */    ripState.port = htons (RIP_PORT);        ripState.addr.sin_family = AF_INET;    ripState.addr.sin_port = ripState.port;    ripState.addr.sin_addr.s_addr = INADDR_ANY;            ripState.s = getsocket (AF_INET, SOCK_DGRAM, &ripState.addr);    if (ripState.s < 0)        {        if (routedDebug)            logMsg ("Unable to get input/output socket.\n", 0, 0, 0, 0, 0, 0);        return (ERROR);        }    /*      * Now open a routing socket so that we can receive routing messages     * from the Routing system     */        ripState.routeSocket = socket (AF_ROUTE, SOCK_RAW, 0);    if (ripState.routeSocket < 0)        {        if (routedDebug)            logMsg ("Unable to get route socket.\n", 0, 0, 0, 0, 0, 0);        close (ripState.s);         return (ERROR);        }    /* Set the non-block option on the routing socket */    on = 1;    if (ioctl (ripState.routeSocket, FIONBIO, (int) &on) == -1)         if (routedDebug)             logMsg ("error setting O_NONBLOCK option on route socket.\n",                     0, 0, 0, 0, 0, 0);    /*     * Turn off the loopback option on the socket as we do not want     * routing messages for events generated a write on this socket.     * Currently we only read from this socket, never write to it.     * So this operation is a virtual no-op, but will come in handy     * if we ever use routing sockets to add/delete/change routes.     */    on = 0;    if (setsockopt (ripState.routeSocket, SOL_SOCKET, SO_USELOOPBACK,                     (char *)&on, sizeof (on)) == ERROR)        if (routedDebug)             logMsg ("error resetting SO_USELOOPBACK option on route socket.\n",                     0, 0, 0, 0, 0, 0);    ripState.supplier = supplier;    ripState.gateway = gateway;    /* VxWorks specific setup. */    ripState.timerDog = wdCreate ();    ripState.timerSem = semBCreate (SEM_Q_FIFO, SEM_EMPTY);    if (ripState.timerSem == NULL)        {        if (routedDebug)            logMsg ("Error creating timer semaphore.\n", 0, 0, 0, 0, 0, 0);        close (ripState.s);         close (ripState.routeSocket);         wdDelete (ripState.timerDog);        return (ERROR);        }    ripLockSem = semBCreate (SEM_Q_FIFO, SEM_FULL);    if (ripLockSem == NULL)        {        if (routedDebug)            logMsg ("Error creating mutex semaphore.\n", 0, 0, 0, 0, 0, 0);        close (ripState.s);         close (ripState.routeSocket);         wdDelete (ripState.timerDog);        semDelete (ripState.timerSem);        return (ERROR);        }    /*     * Setup the hash tables for route entries and create entries to     * access the directly connected networks through the current     * interfaces.      */    routedTableInit ();    if (routedIfInit (TRUE, 0) == ERROR)        {        if (routedDebug)            logMsg ("Error building interface list.\n", 0, 0, 0, 0, 0, 0);        close (ripState.s);         close (ripState.routeSocket);         wdDelete (ripState.timerDog);        semDelete (ripState.timerSem);        semDelete (ripLockSem);        return (ERROR);        }    /*     * If configured as a gateway to the wider Internet, add an internal     * entry to the RIP routing table so that any default routes received      * will be ignored.     */    if (ripState.gateway > 0)        rtdefault ();    if (ripState.supplier < 0)        ripState.supplier = 0;    /*      * Send a request message over all available interfaces     * to retrieve the tables from neighboring RIP routers.     */    query->rip_cmd = RIPCMD_REQUEST;    query->rip_vers = ripState.version;    if (sizeof (query->rip_nets[0].rip_dst.sa_family) > 1)	/* XXX */        query->rip_nets[0].rip_dst.sa_family = htons ( (u_short)AF_UNSPEC);    else        query->rip_nets[0].rip_dst.sa_family = AF_UNSPEC;    query->rip_nets[0].rip_metric = htonl ( (u_long)HOPCNT_INFINITY);    toall (sndmsg, 0, NULL);        /* Start the watchdog used by the timer task to send periodic updates. */    ripTimerArm (ripState.timerRate);    /* Create the timer task. */    ripState.ripTimerTaskId = taskSpawn (RIP_TIMER, _ripTimerTaskPriority,                                          _ripTimerTaskOptions,                                          _ripTimerTaskStackSize,                                         (FUNCPTR)ripTimer,#ifdef VIRTUAL_STACK                                         stackNum, 0, 0, 0, 0, 0, 0, 0, 0, 0);#else                                         0, 0, 0, 0, 0, 0, 0, 0, 0, 0);#endif    if (ripState.ripTimerTaskId == ERROR)        {        if (routedDebug)            logMsg ("Error creating timer task. : errno=0x%x\n", errno, 0, 0, 0,                     0, 0);        close (ripState.s);         close (ripState.routeSocket);         wdCancel (ripState.timerDog);        wdDelete (ripState.timerDog);        semDelete (ripState.timerSem);        semDelete (ripLockSem);        return (ERROR);        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区不卡| av一二三不卡影片| 亚洲成av人片在线观看| 一区二区三区影院| 一区二区三区欧美在线观看| 亚洲日韩欧美一区二区在线| 亚洲视频在线一区| 亚洲综合一区在线| 亚洲一区二区美女| 日韩国产欧美三级| 麻豆精品在线视频| 国产一区在线看| 国产不卡免费视频| 成人高清av在线| 色婷婷一区二区| 欧美日韩国产大片| 日韩欧美久久久| 国产午夜一区二区三区| 国产精品天天看| 亚洲黄色免费网站| 香蕉久久夜色精品国产使用方法| 日韩中文字幕一区二区三区| 男女视频一区二区| 丁香网亚洲国际| 91成人免费在线视频| 欧美久久久久中文字幕| 精品久久国产97色综合| 欧美国产日本视频| 亚洲精品午夜久久久| 午夜国产精品影院在线观看| 久久av老司机精品网站导航| 成人性生交大合| 欧洲精品中文字幕| 日韩欧美一区二区视频| 欧美国产一区二区| 一区二区三区中文字幕在线观看| 欧美a一区二区| 成人手机在线视频| 欧美性生活影院| 精品国产免费一区二区三区香蕉| 国产精品全国免费观看高清 | 亚洲一区国产视频| 日本在线观看不卡视频| 国产不卡一区视频| 777奇米四色成人影色区| 国产日韩欧美高清| 亚洲国产精品久久久久秋霞影院| 国产一区二区三区香蕉| 日本韩国欧美国产| 精品国产精品网麻豆系列| 亚洲视频每日更新| 看电视剧不卡顿的网站| 97国产一区二区| 日韩欧美的一区二区| 亚洲天堂av一区| 国产一区二区导航在线播放| 欧洲色大大久久| 中文字幕高清一区| 日本成人在线电影网| 成人av电影免费观看| 91精品国产综合久久久久久久 | 国产精品第一页第二页第三页| 日韩影院在线观看| 99热这里都是精品| 欧美成人vr18sexvr| 一区二区三区国产精华| 韩国理伦片一区二区三区在线播放| 91麻豆精品秘密| 久久精品一区二区三区不卡牛牛| 午夜伦欧美伦电影理论片| 99久久久免费精品国产一区二区| 精品国产露脸精彩对白| 日韩精品电影在线观看| 99久久99久久精品免费观看| 日韩精品影音先锋| 亚洲一二三四在线观看| a级精品国产片在线观看| 精品国产乱码久久久久久牛牛| 丝袜美腿亚洲一区二区图片| 色老汉av一区二区三区| 国产精品美女久久久久aⅴ| 狠狠色丁香婷婷综合| 51午夜精品国产| 亚洲一区二区三区四区五区黄 | 精品乱人伦小说| 亚洲国产精品一区二区尤物区| 99麻豆久久久国产精品免费优播| 久久亚洲欧美国产精品乐播| 男女男精品视频网| 制服丝袜国产精品| 亚洲高清视频在线| 99麻豆久久久国产精品免费| 国产日韩一级二级三级| 国产精品1区二区.| 久久久亚洲精品一区二区三区| 九一九一国产精品| 日韩欧美一区在线| 日韩和欧美一区二区| 欧美日韩精品三区| 亚洲午夜免费电影| 欧美色视频一区| 亚洲一区精品在线| 欧美色中文字幕| 亚洲小说春色综合另类电影| 日本福利一区二区| 一区二区三区日韩在线观看| 在线视频欧美精品| 亚洲不卡一区二区三区| 欧美日韩高清一区二区不卡| 日韩精品乱码免费| 日韩欧美成人激情| 激情综合网av| 国产午夜精品美女毛片视频| 国产成人免费在线观看不卡| 国产日韩欧美麻豆| av成人免费在线| 亚洲激情一二三区| 欧美日免费三级在线| 日日嗨av一区二区三区四区| 日韩免费在线观看| 国产成人亚洲综合a∨婷婷| 国产日韩欧美高清在线| 91亚洲大成网污www| 亚洲乱码精品一二三四区日韩在线| 日本高清免费不卡视频| 日韩电影在线观看电影| 精品国产一区二区国模嫣然| 国产成人啪午夜精品网站男同| 成人免费在线播放视频| 欧美亚洲自拍偷拍| 青青草成人在线观看| 久久久久久久久久美女| 国产成人一区在线| 亚洲精品免费视频| 91精品综合久久久久久| 九九精品一区二区| 国产精品国产自产拍高清av | 久久综合色综合88| 成人a区在线观看| 亚洲成人一区二区| 精品国产百合女同互慰| 99久久精品免费精品国产| 性做久久久久久免费观看欧美| 久久众筹精品私拍模特| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩国产精品久久久| 国产亚洲精久久久久久| 在线观看中文字幕不卡| 国产一区二区在线观看免费 | 国产不卡视频在线播放| 亚洲国产日日夜夜| 亚洲一区二区偷拍精品| 欧美成人一区二区三区在线观看| 9久草视频在线视频精品| 天堂蜜桃91精品| 国产精品色呦呦| 欧美日韩中字一区| 国产激情一区二区三区四区 | 夜夜精品视频一区二区| 日韩欧美在线一区二区三区| 成人深夜视频在线观看| 五月婷婷综合网| 国产精品免费人成网站| 3d成人h动漫网站入口| av资源网一区| 国内国产精品久久| 亚洲成人三级小说| 亚洲国产精品成人综合| 欧美一区二区三区爱爱| 99久久精品情趣| 韩国一区二区在线观看| 性做久久久久久| 亚洲美女淫视频| 中文一区二区在线观看| 日韩精品一区二区在线观看| 色诱视频网站一区| 国产激情一区二区三区四区| 男人操女人的视频在线观看欧美| 一二三四社区欧美黄| 中文字幕永久在线不卡| 久久久天堂av| 日韩欧美国产午夜精品| 欧美日韩在线综合| 97aⅴ精品视频一二三区| 国产盗摄视频一区二区三区| 久88久久88久久久| 日产精品久久久久久久性色| 怡红院av一区二区三区| 国产精品无人区| 久久久国际精品| 精品免费日韩av| 91精品国产欧美一区二区成人| 欧美性大战久久| 91久久精品一区二区三区| 大胆亚洲人体视频| 国产成人免费9x9x人网站视频| 国产一区二区三区在线看麻豆| 奇米在线7777在线精品| 麻豆精品在线看| 九色综合国产一区二区三区|