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

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

?? ospf_transmit_update.c

?? vxworks下ospf協議棧
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* ospf_transmit_update.c - OSPF transmit update *//* Copyright 2000-2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------02a,14aug03,kkz     Fixed compiler warning (removed unused variable)01z,26jun03,agi     Re-added early LSA retransmission fix made compatible with                    new routing table01y,23jun03,agi     Backed out SPR#88619 early LSA retransmission changes, not                    compatible with new routing table01x,26may03,agi     Changed rwos_get_system_elapsed_time_second() to                    ospf_get_system_elapsed_time_second()01w,22may03,dsk     SPR 88619 Fix early LSA retransmission, more parts of same fix01v,22may03,dsk     SPR 88619 Fix early LSA retransmission01u,17feb03,mwv     SPR 85906 - use ip header size in calculation for packet fragmentation01t,29nov02,htm     Added fix for SPRs 81633, 81674 (ANVL 12.4, 12.5, 26.7).01s,11oct01,jkw     Set pointer to NULL after table_free.01r,22aug01,jkw     Added opaque lsa updates.01q,11may01,aos     Added null pointer checks and fixed to iteration of the database node.01p,26sep00,reshma  Added WindRiver CopyRight01o,25sep00,reshma  RFC-1587 implementation for OSPF NSSA Option, also tested against ANVL.01n,07jul00,reshma  Unix compatibility related changes.01m,04apr00,reshma  Added some MIB support (Read only).Passed all important ANVL OSPF tests.01l,23dec99,reshma  Compatibility with VxWorks-IP and VxWorks RTM-interface01k,28dec98,jack    Compiled and added some comments01j,11nov98,jack    Config changes, linted and big endian changes01i,30oct98,jack    Incorporate changes for compilation on Vxworks01h,23aug98,jack    ANVL tested OSPF with PATRICIA tree route table and no recursion01g,10aug98,jack    PATRICIA Route Table Based OSPF Code Base01f,04jun98,jack    Integration with RTM and BGP01e,24apr98,jack    RTM changes01d,10jul97,cindy   Pre-release v1.52b01c,02oct97,cindy   Release Version 1.5201b,22oct96,cindy   Release Version 1.5001a,05jun96,cindy   First Beta Release*//*DESCRIPTIONospf_transmit_update.c is used for transmitting link state update packets. Thisfile finds all the appropriate link state advertisements in the link statedatabase and adds them to the link state update.This file is used whenever a new OSPF link state update packets need to betransmitted.*/#include "ospf.h"#if defined (__OSPF_VIRTUAL_STACK__)#include "ospf_vs_lib.h"#endif /* __OSPF_VIRTUAL_STACK__ *//*******************************************************************************************************************************//* SPR 88619 start */static void ospf_build_and_send_ls_update_packets (OSPF_LS_DATABASE_NODE *sptr_ls_database_list,ULONG destination_router,    OSPF_INTERFACE *sptr_interface,enum BOOLEAN retransmit_flag, enum BOOLEAN advertisement_installed,    OSPF_NEIGHBOR *sptr_neighbor);static enum BOOLEAN ospf_check_if_advertisement_should_be_sent (OSPF_LS_DATABASE_NODE *sptr_database_node,OSPF_INTERFACE *sptr_interface,    ULONG destination_router,    enum BOOLEAN retransmit_flag,    OSPF_NEIGHBOR *sptr_neighbor);/* SPR 88619 end */static enum BOOLEAN ospf_check_if_packet_is_full (OSPF_LS_DATABASE_NODE *sptr_database_node,OSPF_INTERFACE *sptr_interface,    ULONG packet_length);static UNION_OSPF_ADVERTISEMENT_HEADER *ospf_add_advertisement_to_ls_update_packet (    OSPF_LS_DATABASE_NODE *sptr_database_node,    UNION_OSPF_ADVERTISEMENT_HEADER *sptr_advertisement_header,    OSPF_HEADER *sptr_packet,    ULONG *sptr_packet_length, enum BOOLEAN advertisement_installed);/* SPR 88619 start */static OSPF_LSA_TIMESTAMP_PER_INTERFACE_LIST * ospf_find_timestamp_for_lsdb_entry(OSPF_LS_DATABASE_ENTRY *sptr_ls_database_entry,                                   ULONG destination_router_id,                                   OSPF_INTERFACE *sptr_interface,                                   ULONG *last_tx_time,                                   OSPF_NEIGHBOR *sptr_neighbor);static void ospf_update_lsa_transmit_timestamp(OSPF_LS_DATABASE_ENTRY *sptr_database_entry,                                        OSPF_LSA_TIMESTAMP_PER_INTERFACE_LIST *sptr_retx_timestamp_list,                                        ULONG timestamp,                                        ULONG destination_router,                                        OSPF_NEIGHBOR *sptr_neighbor,                                        ULONG if_index);/* SPR 88619 end *//*******************************************************************************//* section 13.3 of OSPF specification (page 138) */void ospf_send_ls_update (OSPF_LS_DATABASE_NODE *sptr_database_list,OSPF_NEIGHBOR *sptr_neighbor,OSPF_INTERFACE *sptr_interface,    enum BOOLEAN retransmit_flag, enum BOOLEAN advertisement_installed){    char print_buffer[PRINT_BUFFER_SIZE];    ULONG destination_router;    OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_send_ls_update\r\n");    if (sptr_interface->state == OSPF_INTERFACE_IS_DOWN)        {        OSPF_CONVERT_IP_ADDRESS_TO_DOT_FORMAT_FOR_DEBUG (print_buffer, sptr_interface->address);        OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF:  Interface %s is down.  Cannot send LS Update packet.\r\n", print_buffer);        return;        }    if ( (sptr_neighbor != NULL) && (retransmit_flag == TRUE) )       /* retransmissions are sent unicast */        {        destination_router = sptr_neighbor->address;        }    else        {        destination_router = ospf_determine_packet_destination (sptr_interface, sptr_neighbor);        }    ospf_build_and_send_ls_update_packets (sptr_database_list, destination_router, sptr_interface, retransmit_flag, advertisement_installed,                                           sptr_neighbor);    return;}/**********************************************************************************************************************************/static void ospf_build_and_send_ls_update_packets (OSPF_LS_DATABASE_NODE *sptr_ls_database_list,ULONG destination_router,    OSPF_INTERFACE *sptr_interface,enum BOOLEAN retransmit_flag, enum BOOLEAN advertisement_installed,    OSPF_NEIGHBOR *sptr_neighbor){    OSPF_HEADER *sptr_packet;    OSPF_LS_DATABASE_NODE *sptr_database_node;    UNION_OSPF_ADVERTISEMENT_HEADER *sptr_advertisement_header;    enum BOOLEAN include_node_in_packet;    enum BOOLEAN packet_is_full;    ULONG packet_length;    OSPF_PRINTF_DEBUG (OSPF_DEBUG_PRINTF, "OSPF: Entering ospf_build_and_send_ls_update_packets\r\n");    sptr_packet = ospf_new_link_state_update (&sptr_advertisement_header, sptr_interface);    if (sptr_packet == NULL)        {        OSPF_PRINTF_DEBUG (OSPF_ALARM_PRINTF, "OSPF: ospf_build_and_send_ls_update_packets::ospf_new_link_state_update() failed!\r\n");        return;        }    packet_length = OSPF_PACKET_SIZE + OSPF_LS_UPDATE_HEADER_SIZE;    for (sptr_database_node = sptr_ls_database_list; sptr_database_node != NULL;        sptr_database_node = sptr_database_node->sptr_forward_link)        {        /* SPR 88619 start */        include_node_in_packet = ospf_check_if_advertisement_should_be_sent (sptr_database_node,                                                                             sptr_interface,                                                                             destination_router,                                                                             retransmit_flag,                                                                             sptr_neighbor);        /* SPR 88619 end */        if (include_node_in_packet == FALSE)            {            continue;                                                                   /* skip to next node */            }        packet_is_full = ospf_check_if_packet_is_full (sptr_database_node, sptr_interface, packet_length);        if (packet_is_full == TRUE) /* the packet can't hold any more advertisements, so send it out and start building a new packet */            {            if (sptr_packet->rest_of_packet.ls_update.number_of_advertisements == 0x00000000L)                {                /* the first advertisement we want to put in the packet is huge and won't fit. So skip it and go on the the next one.*/                memset (sptr_packet, 0x0, packet_length);                packet_length = OSPF_PACKET_SIZE + OSPF_LS_UPDATE_HEADER_SIZE;                continue; /* gon on to the next one */                }            else                {                sptr_packet->rest_of_packet.ls_update.number_of_advertisements = host_to_net_long  (                    sptr_packet->rest_of_packet.ls_update.number_of_advertisements);                ospf_tx_packet (sptr_packet, sptr_interface, OSPF_LINK_STATE_UPDATE_PACKET, packet_length, destination_router, FALSE);                if (retransmit_flag == TRUE)        /* section 13.6 (page 144) - "When advertisements are to be retransmitted, only the number */                    {                                       /* fitting in a single Link State Update packet should be sent." */                    ospf_free_an_ospf_send_packet (sptr_packet);                    return;                    }                memset (sptr_packet, 0x0, packet_length);                sptr_advertisement_header = (UNION_OSPF_ADVERTISEMENT_HEADER *) &(sptr_packet->rest_of_packet.ls_update.advertisement_header);                packet_length = OSPF_PACKET_SIZE + OSPF_LS_UPDATE_HEADER_SIZE;                }            }        sptr_advertisement_header = ospf_add_advertisement_to_ls_update_packet (sptr_database_node, sptr_advertisement_header,            sptr_packet, &packet_length, advertisement_installed);        sptr_database_node->periodic_retransmit_time_counter = 0x00000000L;     /* reset timer */        }    if (sptr_packet->rest_of_packet.ls_update.number_of_advertisements > 0x00000000L)        {        /* the packet is not as full as it could be, but we ran out of advertisements to fill it up, so send it out anyway */        sptr_packet->rest_of_packet.ls_update.number_of_advertisements = host_to_net_long  (            sptr_packet->rest_of_packet.ls_update.number_of_advertisements);        ospf_tx_packet (sptr_packet, sptr_interface, OSPF_LINK_STATE_UPDATE_PACKET, packet_length, destination_router, TRUE );        }    else        {        ospf_free_an_ospf_send_packet (sptr_packet);        }    return;}/* SPR 88619 start *//**********************************************************************************************************************************//* Function ospf_find_timestamp_for_lsdb_entry    finds the timestamp of last LSA transmission to a given destination    for an LSDB entry   Pseudocode:    if transmit timestamp node of database node is given,        just update timestamp    else        create transmit timestamp node        update its timestamp        enqueue in database node's list of transmit timestamps*/static OSPF_LSA_TIMESTAMP_PER_INTERFACE_LIST * ospf_find_timestamp_for_lsdb_entry    (    OSPF_LS_DATABASE_ENTRY *sptr_ls_database_entry,    ULONG destination_router_id,    OSPF_INTERFACE *sptr_interface,    ULONG *last_tx_time,    OSPF_NEIGHBOR *sptr_neighbor    )    {    OSPF_LSA_TIMESTAMP_PER_INTERFACE_LIST *sptr_retx_timestamp_node = NULL;    *last_tx_time = 0;    for (sptr_retx_timestamp_node = sptr_ls_database_entry->sptr_lsa_retransmit_timestamps_per_neighbor;         sptr_retx_timestamp_node != NULL;         sptr_retx_timestamp_node = sptr_retx_timestamp_node->sptr_forward_link)    {        /* unicast case */        if ((sptr_retx_timestamp_node->if_index == sptr_interface->ifnet_index) &&            (sptr_retx_timestamp_node->neighbor_id == destination_router_id))        {            /* found timestamp of last transmission of this LSA to this neighbor.            Record timestamp */            *last_tx_time = sptr_retx_timestamp_node->timestamp;            break;        }        /* multicast case */        if ((sptr_neighbor != NULL) &&            (sptr_neighbor->state == OSPF_NEIGHBOR_FULL))        {            if (/* if sending to DR or BDR, timestamp of last multicast transmission                    to either all SPF routers or to all designated routers (DR and BDR) would do */                 (destination_router_id == sptr_interface->designated_router.id) ||                 (destination_router_id == sptr_interface->backup_designated_router.id))            {                if ((sptr_retx_timestamp_node->neighbor_id == OSPF_ADDR_ALLSPF) ||                    (sptr_retx_timestamp_node->neighbor_id == OSPF_ADDR_ALLDR))                {                    /* found timestamp of last transmission of this LSA as multicast (all SPF routers,                    or all designated routers and this is unicast transmission to DR or BDR. Accept                    timestamp of last multicast transmission.                    Record timestamp */                    *last_tx_time = sptr_retx_timestamp_node->timestamp;                    break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合精品三级| 亚洲免费视频中文字幕| 美日韩一区二区| 日韩亚洲国产中文字幕欧美| 日韩av在线免费观看不卡| 日韩欧美第一区| 欧美亚洲免费在线一区| 亚洲一区中文在线| 欧美一区二区播放| 国产精品一品视频| 亚洲视频1区2区| 91精品国产91久久综合桃花| 国产揄拍国内精品对白| 国产精品传媒入口麻豆| 91麻豆国产福利精品| 日本美女一区二区三区视频| 亚洲精品一区二区在线观看| 95精品视频在线| 日韩影视精彩在线| 国产欧美综合在线| 在线免费不卡电影| 国产综合色视频| 亚洲女性喷水在线观看一区| 91精品国产综合久久蜜臀| 精品一区二区三区日韩| 亚洲欧美日本韩国| 欧美xxxxx牲另类人与| 99re这里都是精品| 日韩激情视频在线观看| 国产精品麻豆欧美日韩ww| 欧美久久久影院| 成人美女视频在线看| 亚洲成av人片| 国产精品欧美经典| 884aa四虎影成人精品一区| 国产99久久久精品| 日韩高清不卡一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美性受极品xxxx喷水| 高清不卡在线观看| 蜜桃传媒麻豆第一区在线观看| 国产精品久久久久影院| 欧美不卡一二三| 欧美色电影在线| 精品欧美一区二区久久| 欧美亚洲高清一区二区三区不卡| 国产精品一品视频| 麻豆91在线看| 亚洲电影激情视频网站| 综合久久久久久| 久久精品视频在线看| 日韩一区二区三区在线观看| 91论坛在线播放| 成人网在线免费视频| 久久66热偷产精品| 丝袜美腿亚洲色图| 亚洲一区二区综合| 亚洲特黄一级片| 中文字幕免费一区| 久久久亚洲国产美女国产盗摄| 91精品国产综合久久久久久久久久 | 在线不卡一区二区| 91高清视频免费看| 成人黄色电影在线| 丁香亚洲综合激情啪啪综合| 精品无人码麻豆乱码1区2区| 六月丁香综合在线视频| 婷婷国产v国产偷v亚洲高清| 亚洲一区二区三区视频在线| 亚洲精品日产精品乱码不卡| 亚洲日本一区二区| 亚洲摸摸操操av| 亚洲三级电影全部在线观看高清| 国产精品视频一二三| 国产精品国产三级国产aⅴ入口| 国产亚洲1区2区3区| 久久久精品国产免大香伊 | 欧美日韩精品综合在线| 久久日韩精品一区二区五区| 日韩欧美一区二区免费| 日韩一二三区不卡| 精品国产网站在线观看| 久久综合久久综合亚洲| 久久久久国产精品麻豆| 久久久91精品国产一区二区精品 | 日韩av一级片| 免费一级欧美片在线观看| 美女看a上一区| 精品在线你懂的| 国产激情视频一区二区在线观看| 国产高清亚洲一区| 99综合影院在线| 色噜噜狠狠色综合中国| 欧美疯狂做受xxxx富婆| 精品女同一区二区| 国产精品视频九色porn| 一区二区三区在线高清| 石原莉奈一区二区三区在线观看| 久久99久久99| 白白色 亚洲乱淫| 欧美系列亚洲系列| 精品免费国产二区三区| 国产精品美女一区二区三区| 一区二区久久久久久| 免费成人在线影院| 成人开心网精品视频| 欧美三区在线观看| 久久久久国产成人精品亚洲午夜| 1024国产精品| 在线免费一区三区| 欧美一级二级三级蜜桃| 久久久久久久久久看片| 亚洲综合一区二区| 激情综合网天天干| 色综合中文字幕国产 | 国产精品久久午夜| 视频在线观看一区二区三区| 国产成人三级在线观看| 欧美最新大片在线看| 26uuu亚洲综合色| 亚洲六月丁香色婷婷综合久久| 日欧美一区二区| 99久久免费视频.com| 69精品人人人人| 亚洲欧洲www| 久久精品噜噜噜成人88aⅴ| www.爱久久.com| 精品福利av导航| 亚洲制服欧美中文字幕中文字幕| 国产乱子伦一区二区三区国色天香| 在线亚洲+欧美+日本专区| 久久久久久久久伊人| 日韩精品成人一区二区三区| 99久久免费国产| 精品国免费一区二区三区| 午夜精品久久久久久久蜜桃app| 成人午夜视频福利| 欧美成人乱码一区二区三区| 亚洲一本大道在线| 99视频有精品| 国产精品沙发午睡系列990531| 麻豆精品在线观看| 欧美日韩一区二区在线视频| 中文字幕一区二区三区av| 国产自产视频一区二区三区| 日韩一区二区三区四区| 亚洲va国产va欧美va观看| 91视频免费播放| 国产精品免费av| 国产成人8x视频一区二区| 久久先锋影音av鲁色资源网| 日本成人在线不卡视频| 欧美在线影院一区二区| 国产精品久线观看视频| 国产91丝袜在线18| 久久嫩草精品久久久精品| 午夜精品国产更新| 欧美视频中文字幕| 一区二区三区免费在线观看| 色综合久久久久| 亚洲欧美一区二区三区极速播放 | 国内成人自拍视频| 精品日本一线二线三线不卡| 人人爽香蕉精品| 欧美福利一区二区| 日韩影院精彩在线| 日韩视频一区二区三区在线播放| 天堂在线亚洲视频| 在线不卡a资源高清| 免费人成黄页网站在线一区二区| 51午夜精品国产| 日本中文字幕一区二区有限公司| 337p亚洲精品色噜噜狠狠| 日韩成人免费看| 精品国产乱码久久久久久久| 国产乱一区二区| 欧美激情一二三区| 一本大道久久精品懂色aⅴ| 一区二区三区不卡视频 | 午夜久久久影院| 欧美一级免费大片| 久久99热这里只有精品| 亚洲精品一区二区三区蜜桃下载| 国产精品一区二区三区乱码 | www.在线欧美| 1000精品久久久久久久久| 色88888久久久久久影院野外| 亚洲一区二区在线视频| 欧美日韩另类国产亚洲欧美一级| 亚洲mv大片欧洲mv大片精品| 日韩一区二区三区在线视频| 国产经典欧美精品| 国产精品第13页| 欧美日韩国产一二三| 国产精品一区二区久激情瑜伽| 国产精品不卡视频| 欧美日韩视频在线第一区| 久久99久国产精品黄毛片色诱| 国产精品色一区二区三区| 欧美在线观看禁18|