亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
另类欧美日韩国产在线| 国产亚洲综合在线| 亚洲在线中文字幕| 91亚洲永久精品| 亚洲男人的天堂一区二区| av爱爱亚洲一区| 亚洲亚洲精品在线观看| 欧美人妇做爰xxxⅹ性高电影| 亚洲第一激情av| 日韩一级高清毛片| 国产99一区视频免费| 亚洲欧洲日产国码二区| 欧美日韩中文字幕一区| 老司机精品视频线观看86| 久久品道一品道久久精品| 不卡区在线中文字幕| 亚洲综合久久av| 欧美成人伊人久久综合网| 成人午夜私人影院| 午夜精品福利视频网站| 久久综合久久久久88| 色婷婷一区二区三区四区| 日本在线不卡视频一二三区| 国产亚洲欧洲997久久综合| 色激情天天射综合网| 奇米色777欧美一区二区| 国产精品三级电影| 欧美日韩久久久久久| 国产精品66部| 亚洲国产精品久久久久秋霞影院 | 91精品在线观看入口| 国产一区在线不卡| 一区二区三区精品在线观看| 日韩精品中午字幕| 欧美在线不卡一区| 国产一区视频在线看| 亚洲国产一二三| 亚洲国产精品精华液2区45| 欧美视频精品在线观看| 成人免费看片app下载| 午夜久久久久久电影| 国产精品高潮久久久久无| 欧美一级欧美三级| av在线这里只有精品| 久久99久久精品欧美| 亚洲亚洲精品在线观看| 日本一区二区电影| 日韩久久久久久| 欧美在线一区二区三区| 成人午夜私人影院| 国内精品在线播放| 日韩高清在线一区| 亚洲精品免费在线观看| 国产色婷婷亚洲99精品小说| 欧美一级国产精品| 欧美丝袜自拍制服另类| 99在线精品观看| 国产精品自在欧美一区| 偷拍日韩校园综合在线| 亚洲精品菠萝久久久久久久| 中文字幕+乱码+中文字幕一区| 日韩精品一区二区三区三区免费| 欧美日韩一区三区| 色诱亚洲精品久久久久久| 国产.精品.日韩.另类.中文.在线.播放| 日本中文在线一区| 婷婷国产在线综合| 性做久久久久久久免费看| 亚洲精品一二三| 日韩理论电影院| 国产精品美女久久福利网站| 久久亚洲综合色| 精品剧情在线观看| 欧美电影免费观看高清完整版| 欧美一区二区美女| 91精品国产综合久久福利软件| 欧美午夜一区二区三区| 色94色欧美sute亚洲线路一ni| www.欧美色图| 91免费视频大全| 色哟哟一区二区三区| 色婷婷亚洲综合| 欧美日韩免费视频| 在线91免费看| 欧美一级午夜免费电影| 欧美大片免费久久精品三p| 精品国产网站在线观看| 26uuu亚洲| 中文成人av在线| 中文字幕在线免费不卡| 亚洲美腿欧美偷拍| 亚洲动漫第一页| 美女脱光内衣内裤视频久久网站| 免费高清在线视频一区·| 久久99精品久久久久久动态图| 激情小说亚洲一区| 国产成人高清在线| 在线观看亚洲成人| 正在播放一区二区| 久久久精品tv| 亚洲欧美一区二区三区久本道91| 亚洲激情综合网| 免费在线视频一区| 国产成人综合网| 欧美在线色视频| 精品剧情v国产在线观看在线| 国产精品日产欧美久久久久| 亚洲黄网站在线观看| 美国十次了思思久久精品导航| 国产剧情一区二区| 91成人看片片| 日韩精品一区二区三区视频播放| 国产精品久线在线观看| 亚洲国产精品久久久男人的天堂| 狠狠色综合日日| 色综合久久久久久久| 精品国产免费人成电影在线观看四季| 国产日韩精品一区二区浪潮av| 亚洲免费伊人电影| 韩国中文字幕2020精品| 日本黄色一区二区| 欧美精品一区视频| 一二三四区精品视频| 国产一区二区免费在线| 在线看国产一区| 久久精品亚洲乱码伦伦中文| 香蕉成人啪国产精品视频综合网 | 成人免费的视频| 欧美精品高清视频| 国产精品视频一区二区三区不卡| 亚洲国产精品精华液网站| 国产成人免费9x9x人网站视频| 欧美视频在线观看一区二区| 26uuu亚洲综合色欧美| 亚洲国产精品久久艾草纯爱| 大尺度一区二区| 久久综合中文字幕| 亚洲国产视频一区| av在线播放不卡| 久久久精品天堂| 毛片基地黄久久久久久天堂| 色哟哟日韩精品| 国产精品传媒入口麻豆| 精品亚洲aⅴ乱码一区二区三区| 色呦呦网站一区| 国产精品三级在线观看| 九九热在线视频观看这里只有精品| 91久久一区二区| 亚洲欧洲日韩女同| www.欧美.com| 欧美国产日韩精品免费观看| 另类成人小视频在线| 欧美人与z0zoxxxx视频| 亚洲国产一区视频| 欧美亚洲图片小说| 亚洲精品自拍动漫在线| 成人app网站| 国产欧美精品一区aⅴ影院 | 性久久久久久久| 在线免费一区三区| 一区二区三区在线免费| 成人精品一区二区三区中文字幕| 久久综合久久综合九色| 久久成人免费日本黄色| 日韩亚洲欧美高清| 天天综合网 天天综合色| 欧美日韩在线电影| 亚洲自拍另类综合| 欧美日韩久久久| 视频一区二区欧美| 制服.丝袜.亚洲.另类.中文| 亚洲va在线va天堂| 欧美乱熟臀69xxxxxx| 亚洲h在线观看| 在线不卡欧美精品一区二区三区| 亚洲制服丝袜一区| 欧美日韩一本到| 日本视频在线一区| 欧美电影免费观看高清完整版 | 国产精品亚洲综合一区在线观看| 久久久www免费人成精品| 国产精品一区二区无线| 久久一夜天堂av一区二区三区| 国产精品乡下勾搭老头1| 国产精品天天摸av网| 91年精品国产| 亚洲 欧美综合在线网络| 欧美一区二区三区四区视频| 美女国产一区二区三区| 国产亚洲欧美中文| 色综合色狠狠综合色| 亚洲自拍偷拍网站| 精品国一区二区三区| 成人做爰69片免费看网站| 一区二区三区四区中文字幕| 欧美日本视频在线| 国产自产视频一区二区三区| 国产精品污污网站在线观看| 在线观看亚洲a| 国产中文字幕精品|