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

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

?? stp-8021d-d17.c

?? 基于vxworks操作系統,Tornado2.0平臺,生成樹STP源碼.直接在其對應的設備中添加即可.
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* stp-8021d-d17.c - Spanning Tree Algorithm and Protocol */

/* Copyright 2001 Wind River Systems, Inc. */
/* Copyright 1998-2000 Wind River Systems, Inc. */
/* Copyright 1999 Wind River Systems, Inc. */
/* Copyright 1998-1999 XACT, Inc. */

#include "copyright_wrs.h"

/*
modification history
--------------------
00g,12jun01,tf  In transmit_tcn(), port_no was being tested before even set.
00f,18apr01,kc  Replaced "extern" with "IMPORT".
00e,10dec00,ajw Changes to comments for refgen web pages
01c,16nov00,kw  Ran thru lint.
01b,24sep00,kw  Change the code to handle Identifier as a structure and not
                a unsigned long long value. Using the 64 bit word has some
                little endian problems for the pcSwitch.
01a,24sep00,kw  Updated.
*/

/*
DESCRIPTION:
The routines in this midule interface spanLib to the lower level Spanning Tree
routines.
*
INCLUDES:
\ml
\m tmsTypes.h
\m spantree.h
\m spanglob.h
\m trap.h
\me
*/

#define INCLUDE_ID_ROUTINES

/* includes */
 
#include <stp/types.h>
#include <stp/spantree.h>
#include <stp/spanglob.h>

/* defines */

/* typedefs */

/* locals */

#ifndef _lint
char * span_version =
  "STP Version: ISO/IEC Final DIS 15802-3 (IEEE P802.1D/D17) May 25, 1998\n";
#endif

Bridge_data  bridge_info;           /* (8.5.3)        */
Port_data*   port_info;             /* (8.5.5)        */
Config_bpdu* config_bpdu;
Tcn_bpdu*    tcn_bpdu;
Timer        hello_timer;           /* (8.5.4.1)      */
Timer        tcn_timer;             /* (8.5.4.2)      */
Timer        topology_change_timer; /* (8.5.4.3)      */
Timer*       message_age_timer;     /* (8.5.6.1)      */
Timer*       forward_delay_timer;   /* (8.5.6.2)      */
Timer*       hold_timer;            /* (8.5.6.3)      */

Timer        since_topology_change;
/* globals */

/* forward declarations */

IMPORT STATUS No_of_ports;

/*******************************************************************************
* transmit_config  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void transmit_config
    (
    Int port_no
    )   /* (8.6.1)        */
{    
    if (hold_timer[port_no].active)     /* (8.6.1.3.1)    */
    {    
        port_info[port_no].config_pending = True;   /* (8.6.1.3.1)    */
    }
    else
        /* (8.6.1.3.2)    */
    {
        config_bpdu[port_no].type = Config_bpdu_type;

        id_equate(config_bpdu[port_no].root_id, bridge_info.designated_root);
        /* (8.6.1.3.2(a)) */
        config_bpdu[port_no].root_path_cost = bridge_info.root_path_cost;
        /* (8.6.1.3.2(b)) */
        id_equate(config_bpdu[port_no].bridge_id, bridge_info.bridge_id);
        /* (8.6.1.3.2(c)) */
        config_bpdu[port_no].port_id = port_info[port_no].port_id;
        /* (8.6.1.3.2(d)) */
        if (root_bridge())
        {
            config_bpdu[port_no].message_age = Zero;    /* (8.6.1.3.2(e)) */
        }
        else
        {
            config_bpdu[port_no].message_age
                = message_age_timer[bridge_info.root_port].value
                + Message_age_increment;    /* (8.6.1.3.2(f)) */
        }
        config_bpdu[port_no].max_age = bridge_info.max_age;     /* (8.6.1.3.2(g)) */
        config_bpdu[port_no].hello_time = bridge_info.hello_time;
        config_bpdu[port_no].forward_delay = bridge_info.forward_delay;
        config_bpdu[port_no].topology_change_acknowledgment
            = (uchar_t)port_info[port_no].topology_change_acknowledge;
        /* (8.6.1.3.2(h)) */
        config_bpdu[port_no].topology_change
            = (uchar_t)bridge_info.topology_change;  /* (8.6.1.3.2(i)) */

        if (config_bpdu[port_no].message_age < bridge_info.max_age)
        {
            port_info[port_no].topology_change_acknowledge = False;
            /* (8.6.1.3.3) */
            port_info[port_no].config_pending = False;  /* (8.6.1.3.3) */
            send_config_bpdu(port_no, &config_bpdu[port_no]);
            start_hold_timer(port_no);  /* (8.6.3.3(b)) */
        }
    }
}

/*******************************************************************************
* send_config_bpdu  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void send_config_bpdu
    (
    Int port_no,
    Config_bpdu * bpdu
    )
{   
    span_send_config_bpdu(port_no, bpdu);
}

/*******************************************************************************
* root_bridge  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
Boolean root_bridge
    (
    void
    )
{
    return (id_eq(bridge_info.designated_root, bridge_info.bridge_id));
}

/*******************************************************************************
* supersedes_port_info  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/                                                         /* (8.6.2.2)      */
Boolean supersedes_port_info
    (
    Int port_no,
    Config_bpdu * config
    )
{
    return (
        /* (8.6.2.2.1)    */
        (id_lt(config->root_id, port_info[port_no].designated_root))
        ||
        (
          (id_eq(config->root_id, port_info[port_no].designated_root))
          &&
          /* (8.6.2.2.2)    */
          (
            (config->root_path_cost < port_info[port_no].designated_cost)
            ||
            (
              (config->root_path_cost == port_info[port_no].designated_cost)
              &&
              /* (8.6.2.2.3)    */
              (
                (id_lt(config->bridge_id, port_info[port_no].designated_bridge))
                ||
                /* (8.6.2.2.4)    */
                (
                  (id_eq(config->bridge_id, port_info[port_no].designated_bridge))
                  &&
                  /* (8.6.2.2.4(a)) */
                  (
                    (id_neq(config->bridge_id, bridge_info.bridge_id))
                    ||
                    /* (8.6.2.2.4(b)) */
                    (config->port_id <= port_info[port_no].designated_port)
                  )
                )
              )
            )
          )
        )
    );
}

/*******************************************************************************
* record_config_information  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
LOCAL void record_config_information
    (
    Int port_no,
    Config_bpdu * config
    ) /* (8.6.2) */
{
    /* (8.6.2.3.1)   */
    id_equate(port_info[port_no].designated_root, config->root_id);
    port_info[port_no].designated_cost = config->root_path_cost;
    id_equate(port_info[port_no].designated_bridge, config->bridge_id);
    port_info[port_no].designated_port = config->port_id;

    start_message_age_timer(port_no, config->message_age);  /* (8.6.2.3.2)   */
}

/*******************************************************************************
* record_config_timeout_values  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void record_config_timeout_values
    (
    Config_bpdu * config
    )   /* (8.6.3)        */
{
    bridge_info.max_age = config->max_age;  /* (8.6.3.3)      */
    bridge_info.hello_time = config->hello_time;
    bridge_info.forward_delay = config->forward_delay;
    bridge_info.topology_change = config->topology_change;
}

/*******************************************************************************
* config_bpdu_generation  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void config_bpdu_generation
    (
    void
    )       /* (8.6.4)        */
{
    Int port_no;
              
    for (port_no = One; port_no <= No_of_ports; port_no++)  /* (8.6.4.3)      */
    {
        if (designated_port(port_no)    /* (8.6.4.3)      */
            &&
            (port_info[port_no].state != Disabled) &&
            (port_info[port_no].portLinkBlockSet != TRUE)
            )
        {
            transmit_config(port_no);   /* (8.6.4.3)      */
        }                       /* (8.6.1.2)      */
    }
}

/*******************************************************************************
* designated_port  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
Boolean designated_port
    (
    Int port_no
    )
{
    return ((id_eq(port_info[port_no].designated_bridge, bridge_info.bridge_id))
            &&
            (port_info[port_no].designated_port == port_info[port_no].port_id)
        );
}

/*******************************************************************************
* reply  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void reply
    (
    Int port_no
    )               /* (8.6.5)        */
{
    transmit_config(port_no);   /* (8.6.5.3)      */
}

/*******************************************************************************
* transmit_tcn  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void transmit_tcn
    (
    void
    )                   /* (8.6.6)        */
{
    Int port_no;

    port_no = bridge_info.root_port;
#ifdef ST_FAST
    /* if the root port hasn't been set yet, just return */
    if ((port_no < One) || (port_no > No_of_ports))
        return;
#endif /* ST_FAST */

    tcn_bpdu[port_no].type = Tcn_bpdu_type;

    send_tcn_bpdu(port_no, &tcn_bpdu[bridge_info.root_port]);   /* (8.6.6.3)     */

}

/*******************************************************************************
* send_tcn_bpdu  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void send_tcn_bpdu
    (
    Int port_no,
    Tcn_bpdu * bpdu
    )
{
    span_send_tcn_bpdu(port_no, bpdu);
}

/*******************************************************************************
* configuration_update  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void configuration_update
    (
    void
    )           /* (8.6.7)        */
{
    root_selection();           /* (8.6.7.3.1)    */
    /* (8.6.8.2)      */

    designated_port_selection();    /* (8.6.7.3.2)    */
    /* (8.6.9.2)      */
}

/*******************************************************************************
* root_selection  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*
* NOMANUAL <this will be removed later>
*/
void root_selection
    (
    void
    )               /* (8.6.8)       */
{
    Int root_port;
    Int port_no;

    root_port = No_port;

    for (port_no = One; port_no <= No_of_ports; port_no++)  /* (8.6.8.3.1) */
    {
        if (((!designated_port(port_no))
             &&
             (port_info[port_no].state != Disabled)
             &&
             (port_info[port_no].portLinkBlockSet != TRUE)
             &&
             id_lt(port_info[port_no].designated_root, bridge_info.bridge_id)
            )
            &&
            ((root_port == No_port)
             ||
             id_lt(port_info[port_no].designated_root,
                   port_info[root_port].designated_root)   /* (8.6.8.3.1(a)) */
             ||
             (id_eq(port_info[port_no].designated_root,
                    port_info[root_port].designated_root)
              &&
              (((port_info[port_no].designated_cost
                 + port_info[port_no].path_cost
                )
                <
                (port_info[root_port].designated_cost
                 + port_info[root_port].path_cost
                )               /* (8.6.8.3.1(b)) */
               )
               ||
               (((port_info[port_no].designated_cost
                  + port_info[port_no].path_cost
                 )
                 ==
                 (port_info[root_port].designated_cost
                  + port_info[root_port].path_cost
                 )
                )
                &&
                (id_lt(port_info[port_no].designated_bridge,
                       port_info[root_port].designated_bridge)
                               /* (8.6.8.3.1(c)) */
                 ||
                 (id_eq(port_info[port_no].designated_bridge,
                        port_info[root_port].designated_bridge)
                  &&
                  ((port_info[port_no].designated_port
                    < port_info[root_port].designated_port
                   )            /* (8.6.8.3.1(d)) */
                   ||
                   ((port_info[port_no].designated_port
                     == port_info[root_port].designated_port
                    )
                    &&
                    (port_info[port_no].port_id
                     < port_info[root_port].port_id
                    )           /* (8.6.8.3.1(e)) */
                   )))))))))
        {
            root_port = port_no;
        }
    }

    bridge_info.root_port = root_port;  /* (8.6.8.3.1)    */

    if (root_port == No_port)   /* (8.6.8.3.2)    */
    {

        id_equate(bridge_info.designated_root, bridge_info.bridge_id);
        /* (8.6.8.3.2(a)) */
        bridge_info.root_path_cost = Zero;  /* (8.6.8.3.2(b)) */
    }
    else
        /* (8.6.8.3.3)    */
    {
        id_equate(bridge_info.designated_root,
                  port_info[root_port].designated_root);
        /* (8.6.8.3.3(a)) */
        bridge_info.root_path_cost = (port_info[root_port].designated_cost
                                      + port_info[root_port].path_cost
            );                  /* (8.6.8.3.3(b)) */
    }
}

/*******************************************************************************
* designated_port_selection  -
*
* INPUTS:
*
* RETURNS:
*
* ERRORS:
*
* ERRNO:
*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久久久婷婷884| 久久久久久久电影| 国产iv一区二区三区| 久久99精品久久只有精品| 久久av资源网| 黄页视频在线91| 国产精品一区二区91| 国产精品亚洲第一区在线暖暖韩国| 久久99热狠狠色一区二区| 久久丁香综合五月国产三级网站| 麻豆视频观看网址久久| 国产精品综合视频| 成人一区二区三区| 色94色欧美sute亚洲13| 在线观看三级视频欧美| 欧美日本在线视频| 欧美精品一区在线观看| 国产精品亲子伦对白| 亚洲美女在线一区| 日韩国产欧美在线观看| 国产乱人伦偷精品视频不卡| 成人97人人超碰人人99| 在线区一区二视频| 精品美女在线播放| 国产精品久久久久9999吃药| 亚洲成人免费看| 国产综合久久久久久鬼色| 国产69精品久久久久777| 色婷婷亚洲精品| 日韩一级免费一区| 中文字幕一区二区三区精华液 | 成人h版在线观看| 欧洲av在线精品| 欧美一区二区三区免费视频| 精品少妇一区二区三区视频免付费 | 精品久久久久久久久久久院品网 | 成人av免费在线观看| 在线看国产一区| 久久久久久99精品| 亚洲综合成人在线| 国产美女娇喘av呻吟久久| 91成人免费在线视频| 久久久精品黄色| 亚洲一区二区欧美日韩| 国产91在线观看丝袜| 欧美精品视频www在线观看 | 欧美日韩国产影片| 欧美极品xxx| 另类小说欧美激情| 色综合久久九月婷婷色综合| 久久综合99re88久久爱| 亚洲高清不卡在线| 91啪在线观看| 久久久久亚洲蜜桃| 奇米色一区二区| 欧洲激情一区二区| 亚洲欧美另类久久久精品2019| 激情综合网天天干| 日韩午夜av一区| 午夜精品一区二区三区电影天堂 | 91麻豆精品秘密| 国产午夜三级一区二区三| 蜜桃一区二区三区在线观看| 欧美日韩午夜在线| 一区二区三区精密机械公司| a级精品国产片在线观看| 国产亚洲精品超碰| 国产一区二区三区在线观看免费| 欧美一区二区三区啪啪| 免费亚洲电影在线| 69av一区二区三区| 日韩精品一级二级| 6080yy午夜一二三区久久| 亚洲一级电影视频| 欧美三级电影在线看| 亚洲成av人片观看| 正在播放亚洲一区| 另类中文字幕网| 精品国产青草久久久久福利| 精品在线亚洲视频| 欧美精品一区二区蜜臀亚洲| 久久成人羞羞网站| 久久久精品综合| 成人网在线免费视频| 亚洲四区在线观看| 欧美一a一片一级一片| 亚洲观看高清完整版在线观看| 欧美日韩另类一区| 日韩av不卡一区二区| 精品国产网站在线观看| 国产不卡视频一区二区三区| 国产精品久久久久7777按摩| 色噜噜狠狠色综合中国| 亚洲国产日韩综合久久精品| 日韩欧美国产一区在线观看| 国产尤物一区二区在线| 日韩理论片在线| 欧美一区二区三区的| 国产精品自在欧美一区| 亚洲欧美区自拍先锋| 欧美理论电影在线| 国产麻豆91精品| 亚洲日本va在线观看| 欧美另类高清zo欧美| 国产精品综合二区| 亚洲另类春色校园小说| 日韩欧美色综合网站| av亚洲产国偷v产偷v自拍| 亚洲无人区一区| 久久久久99精品国产片| 欧美综合天天夜夜久久| 久久国产福利国产秒拍| 亚洲人精品一区| 欧美mv日韩mv亚洲| 欧美性做爰猛烈叫床潮| 国产精品一区二区在线播放| 亚洲第一主播视频| 国产精品久久毛片av大全日韩| 51精品视频一区二区三区| 99re在线精品| 经典三级一区二区| 亚洲图片自拍偷拍| 中文字幕人成不卡一区| 日韩欧美一区二区视频| 91麻豆精品在线观看| 国产剧情一区在线| 人人精品人人爱| 一区二区三区影院| 中文字幕国产一区| 日韩视频免费观看高清完整版在线观看 | 精品国产电影一区二区| 色又黄又爽网站www久久| 国产成人精品一区二| 免费av成人在线| 亚洲线精品一区二区三区| 国产精品国产三级国产aⅴ入口| 日韩三级视频中文字幕| 欧美性生活影院| 色综合久久综合中文综合网| 国产高清久久久久| 九一九一国产精品| 日韩高清在线不卡| 五月激情综合婷婷| 亚洲成a人片在线观看中文| 自拍偷在线精品自拍偷无码专区| 久久久不卡影院| 精品人在线二区三区| 欧美一二区视频| 日韩亚洲欧美一区二区三区| 在线综合亚洲欧美在线视频| 欧美精品xxxxbbbb| 欧美日产在线观看| 91精品国产综合久久香蕉的特点| 欧美老年两性高潮| 欧美日韩国产成人在线免费| 欧美日韩成人综合在线一区二区| 欧美中文字幕不卡| 欧美肥大bbwbbw高潮| 欧美另类久久久品| 欧美一区二区在线免费播放| 日韩片之四级片| 久久久久久久精| 国产精品久久久久久亚洲毛片 | 欧美一区二区性放荡片| 制服丝袜在线91| 欧美精品一区二区三区四区| 久久丝袜美腿综合| 国产精品久久看| 一区二区不卡在线播放 | 91精彩视频在线观看| 在线精品观看国产| 欧美一区二区在线视频| 久久丝袜美腿综合| 亚洲少妇中出一区| 丝袜亚洲精品中文字幕一区| 久久99国内精品| 97久久精品人人做人人爽50路| 欧洲一区在线观看| 精品精品欲导航| 综合网在线视频| 蜜臀精品久久久久久蜜臀| 久久超碰97人人做人人爱| 99久久免费精品| 欧美一区二区私人影院日本| 日本一区二区视频在线观看| 亚洲在线免费播放| 国产一区二区在线观看免费| 91在线观看视频| 日韩免费福利电影在线观看| 亚洲视频一区二区免费在线观看| 肉色丝袜一区二区| 成人深夜福利app| 91精品在线免费| 中文字幕佐山爱一区二区免费| 日韩成人一区二区| 91蝌蚪国产九色| 精品国产免费久久| 午夜av一区二区| 99精品视频一区二区| 精品国产百合女同互慰|