uid_stp.h
上传用户:allwinjm
上传日期:2021-08-29
资源大小:99k
文件大小:6k
源码类别:

Internet/IE编程

开发平台:

Unix_Linux

  1. /************************************************************************
  2.  * RSTP library - Rapid Spanning Tree (802.1t, 802.1w)
  3.  * Copyright (C) 2001-2003 Optical Access
  4.  * Author: Alex Rozin
  5.  *
  6.  * This file is part of RSTP library.
  7.  *
  8.  * RSTP library is free software; you can redistribute it and/or modify it
  9.  * under the terms of the GNU Lesser General Public License as published by the
  10.  * Free Software Foundation; version 2.1
  11.  *
  12.  * RSTP library is distributed in the hope that it will be useful, but
  13.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
  15.  * General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public License
  18.  * along with RSTP library; see the file COPYING.  If not, write to the Free
  19.  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  20.  * 02111-1307, USA.
  21.  **********************************************************************/
  22. /* External management communication API definitions */
  23. #ifndef _UID_STP_H__
  24. #define _UID_STP_H__
  25. #define NAME_LEN    20
  26. typedef enum {
  27.   STP_DISABLED,
  28.   STP_ENABLED,
  29. } UID_STP_MODE_T;
  30. typedef struct {
  31.   unsigned short  prio;
  32.   unsigned char   addr[6];
  33. } UID_BRIDGE_ID_T;
  34. typedef struct {
  35.   char      vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */
  36.   char      action; /* 1-create, 0- delete */
  37. } UID_STP_BR_CTRL_T;
  38. #define BR_CFG_STATE        (1L << 0)
  39. #define BR_CFG_PRIO         (1L << 1)
  40. #define BR_CFG_AGE          (1L << 2)
  41. #define BR_CFG_HELLO        (1L << 3)
  42. #define BR_CFG_DELAY        (1L << 4)
  43. #define BR_CFG_FORCE_VER    (1L << 5)
  44. #define BR_CFG_AGE_MODE     (1L << 6)
  45. #define BR_CFG_AGE_TIME     (1L << 7)
  46. #define BR_CFG_HOLD_TIME    (1L << 8)
  47. #define BR_CFG_ALL BR_CFG_STATE     | 
  48.                    BR_CFG_PRIO      | 
  49.                    BR_CFG_AGE       | 
  50.                    BR_CFG_HELLO     | 
  51.                    BR_CFG_DELAY     | 
  52.                    BR_CFG_FORCE_VER | 
  53.                    BR_CFG_AGE_MODE  | 
  54.                    BR_CFG_AGE_TIME  | 
  55.                    BR_CFG_HOLD_TIME
  56. typedef struct {
  57.   /* service data */
  58.   unsigned long     field_mask; /* which fields to change */
  59.   UID_STP_MODE_T    stp_enabled;
  60.   char              vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */
  61.   /* protocol data */
  62.   int           bridge_priority;
  63.   int           max_age;
  64.   int           hello_time;
  65.   int           forward_delay;
  66.   int           force_version;
  67.   int           hold_time;
  68. } UID_STP_CFG_T;
  69. typedef struct {
  70.   /* service data */
  71.   char              vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */
  72.   unsigned long     vlan_id;
  73.   UID_STP_MODE_T    stp_enabled;
  74.   /* protocol data */
  75.   UID_BRIDGE_ID_T   designated_root;
  76.   unsigned long     root_path_cost;
  77.   unsigned long     timeSince_Topo_Change; /* 14.8.1.1.3.b: TBD */
  78.   unsigned long     Topo_Change_Count;     /* 14.8.1.1.3.c: TBD */
  79.   unsigned char     Topo_Change;           /* 14.8.1.1.3.d: TBD */
  80.   unsigned short    root_port;
  81.   int               max_age;
  82.   int               hello_time;
  83.   int               forward_delay;
  84.   UID_BRIDGE_ID_T   bridge_id;
  85. } UID_STP_STATE_T;
  86. typedef enum {
  87.   UID_PORT_DISABLED = 0,
  88.   UID_PORT_DISCARDING,
  89.   UID_PORT_LEARNING,
  90.   UID_PORT_FORWARDING,
  91.   UID_PORT_NON_STP
  92. } RSTP_PORT_STATE;
  93. typedef unsigned short  UID_PORT_ID;
  94. typedef enum {
  95.   P2P_FORCE_TRUE,
  96.   P2P_FORCE_FALSE,
  97.   P2P_AUTO,
  98. } ADMIN_P2P_T;
  99. #ifdef __BITMAP_H
  100. #define PT_CFG_STATE    (1L << 0)
  101. #define PT_CFG_COST     (1L << 1)
  102. #define PT_CFG_PRIO     (1L << 2)
  103. #define PT_CFG_P2P      (1L << 3)
  104. #define PT_CFG_EDGE     (1L << 4)
  105. #define PT_CFG_MCHECK   (1L << 5)
  106. #define PT_CFG_NON_STP  (1L << 6)
  107. #ifdef STP_DBG
  108. #define PT_CFG_DBG_SKIP_RX (1L << 16)
  109. #define PT_CFG_DBG_SKIP_TX (1L << 17)
  110. #endif
  111. #define PT_CFG_ALL PT_CFG_STATE  | 
  112.                    PT_CFG_COST   | 
  113.                    PT_CFG_PRIO   | 
  114.                    PT_CFG_P2P    | 
  115.                    PT_CFG_EDGE   | 
  116.                    PT_CFG_MCHECK | 
  117.                    PT_CFG_NON_STP                  
  118. #define ADMIN_PORT_PATH_COST_AUTO   0
  119. typedef struct {
  120.   /* service data */
  121.   unsigned long field_mask; /* which fields to change */
  122.   BITMAP_T      port_bmp;   
  123.   char          vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */
  124.   /* protocol data */
  125.   int           port_priority;
  126.   unsigned long admin_port_path_cost; /* ADMIN_PORT_PATH_COST_AUTO - auto sence */
  127.   ADMIN_P2P_T   admin_point2point;
  128.   unsigned char admin_edge;
  129.   unsigned char admin_non_stp; /* 1- doesn't participate in STP, 1 - regular */
  130. #ifdef STP_DBG
  131.   unsigned int skip_rx;
  132.   unsigned int skip_tx;
  133. #endif
  134. } UID_STP_PORT_CFG_T;
  135. #endif
  136. typedef struct {
  137.   /* service data */
  138.   char              vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */
  139.   unsigned int      port_no; /* key of the entry */
  140.   /* protocol data */
  141.   UID_PORT_ID       port_id;
  142.   RSTP_PORT_STATE   state;
  143.   unsigned long     path_cost;
  144.   UID_BRIDGE_ID_T   designated_root;
  145.   unsigned long     designated_cost;
  146.   UID_BRIDGE_ID_T   designated_bridge;
  147.   UID_PORT_ID       designated_port;
  148. #if 0
  149.   int               infoIs;
  150.   unsigned short    handshake_flags;
  151. #endif
  152.   unsigned long     rx_cfg_bpdu_cnt;
  153.   unsigned long     rx_rstp_bpdu_cnt;
  154.   unsigned long     rx_tcn_bpdu_cnt;
  155.   int               fdWhile;      /* 17.15.1 */
  156.   int               helloWhen;    /* 17.15.2 */
  157.   int               mdelayWhile;  /* 17.15.3 */
  158.   int               rbWhile;      /* 17.15.4 */
  159.   int               rcvdInfoWhile;/* 17.15.5 */
  160.   int               rrWhile;      /* 17.15.6 */
  161.   int               tcWhile;      /* 17.15.7 */
  162.   int               txCount;      /* 17.18.40 */
  163.   int               lnkWhile;
  164.   unsigned long     uptime;       /* 14.8.2.1.3.a */
  165.   unsigned long     oper_port_path_cost;
  166.   unsigned char     role;
  167.   unsigned char     oper_point2point;
  168.   unsigned char     oper_edge;
  169.   unsigned char     oper_stp_neigb;
  170.   unsigned char     top_change_ack;
  171.   unsigned char     tc;
  172. } UID_STP_PORT_STATE_T;
  173. #endif