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

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.  /* This file contains prototypes for API from an operation
  23.     system to the RSTP */
  24.     
  25. #ifndef _STP_API_H__
  26. #define _STP_API_H__
  27. /************************
  28.  * Common base constants
  29.  ************************/
  30. #ifndef INOUT
  31. #  define IN      /* consider as comments near 'input' parameters */
  32. #  define OUT     /* consider as comments near 'output' parameters */
  33. #  define INOUT   /* consider as comments near 'input/output' parameters */
  34. #endif
  35. #ifndef Zero
  36. #  define Zero        0
  37. #  define One         1
  38. #endif
  39. #ifndef Bool
  40. #  define Bool        int
  41. #  define False       0
  42. #  define True        1
  43. #endif
  44. /********************************************
  45.  * constants: default values and linitations
  46.  *********************************************/
  47.  
  48. /* bridge configuration */
  49. #define DEF_BR_PRIO 32768
  50. #define MIN_BR_PRIO 0
  51. #define MAX_BR_PRIO 61440
  52. #define DEF_BR_HELLOT   2
  53. #define MIN_BR_HELLOT   1
  54. #define MAX_BR_HELLOT   10
  55. #define DEF_BR_MAXAGE   20
  56. #define MIN_BR_MAXAGE   6
  57. #define MAX_BR_MAXAGE   40
  58. #define DEF_BR_FWDELAY  15
  59. #define MIN_BR_FWDELAY  4
  60. #define MAX_BR_FWDELAY  30
  61. #define DEF_FORCE_VERS  2 /* NORMAL_RSTP */
  62. /* port configuration */
  63. #define DEF_PORT_PRIO   128
  64. #define MIN_PORT_PRIO   0
  65. #define MAX_PORT_PRIO   240 /* in steps of 16 */
  66. #define DEF_ADMIN_NON_STP   False
  67. #define DEF_ADMIN_EDGE      True
  68. #define DEF_LINK_DELAY      3 /* see edge.c */
  69. #define DEF_P2P         P2P_AUTO
  70. /* Section 1: Create/Delete/Start/Stop the RSTP instance */
  71. void /* init the engine */
  72. STP_IN_init (int max_port_index);
  73. #ifdef __BITMAP_H
  74. int
  75. STP_IN_stpm_create (int vlan_id, char* name, BITMAP_T* port_bmp);
  76. #endif
  77. int
  78. STP_IN_stpm_delete (int vlan_id);
  79. int
  80. STP_IN_stop_all (void);
  81. int
  82. STP_IN_delete_all (void);
  83. /* Section 2. "Get" management */
  84. Bool
  85. STP_IN_get_is_stpm_enabled (int vlan_id);
  86. int
  87. STP_IN_stpm_get_vlan_id_by_name (char* name, int* vlan_id);
  88. int
  89. STP_IN_stpm_get_name_by_vlan_id (int vlan_id, char* name, size_t buffsize);
  90. const char*
  91. STP_IN_get_error_explanation (int rstp_err_no);
  92. #ifdef _UID_STP_H__
  93. int
  94. STP_IN_stpm_get_cfg (int vlan_id, UID_STP_CFG_T* uid_cfg);
  95. int
  96. STP_IN_stpm_get_state (int vlan_id, UID_STP_STATE_T* entry);
  97. int
  98. STP_IN_port_get_cfg (int vlan_id, int port_index, UID_STP_PORT_CFG_T* uid_cfg);
  99. int
  100. STP_IN_port_get_state (int vlan_id, UID_STP_PORT_STATE_T* entry);
  101. #endif
  102. /* Section 3. "Set" management */
  103. int
  104. STP_IN_stpm_set_cfg (int vlan_id,
  105.                      BITMAP_T* port_bmp,
  106.                      UID_STP_CFG_T* uid_cfg);
  107. int
  108. STP_IN_set_port_cfg (int vlan_id,
  109.                      UID_STP_PORT_CFG_T* uid_cfg);
  110. #ifdef STP_DBG
  111. int STP_IN_dbg_set_port_trace (char* mach_name, int enadis,
  112.                                int vlan_id, BITMAP_T* ports,
  113.                                int is_print_err);
  114. #endif
  115. /* Section 4. RSTP functionality events */
  116. int 
  117. STP_IN_one_second (void);
  118. int /* for Link UP/DOWN */
  119. STP_IN_enable_port (int port_index, Bool enable);
  120. int /* call it, when port speed has been changed, speed in Kb/s  */
  121. STP_IN_changed_port_speed (int port_index, long speed);
  122. int /* call it, when current port duplex mode has been changed  */
  123. STP_IN_changed_port_duplex (int port_index);
  124. #ifdef _STP_BPDU_H__
  125. int
  126. STP_IN_check_bpdu_header (BPDU_T* bpdu, size_t len);
  127. int
  128. STP_IN_rx_bpdu (int vlan_id, int port_index, BPDU_T* bpdu, size_t len);
  129. #endif
  130. #ifdef _STP_MACHINE_H__
  131. /* Inner usage definitions & functions */
  132. extern int max_port;
  133. #ifdef __LINUX__
  134. #  define RSTP_INIT_CRITICAL_PATH_PROTECTIO
  135. #  define RSTP_CRITICAL_PATH_START
  136. #  define RSTP_CRITICAL_PATH_END
  137. #else
  138. #  define RSTP_INIT_CRITICAL_PATH_PROTECTIO STP_OUT_psos_init_semaphore ()
  139. #  define RSTP_CRITICAL_PATH_START          STP_OUT_psos_close_semaphore ()
  140. #  define RSTP_CRITICAL_PATH_END            STP_OUT_psos_open_semaphore ()
  141.    extern void STP_OUT_psos_init_semaphore (void);
  142.    extern void STP_OUT_psos_close_semaphore (void);
  143.    extern void STP_OUT_psos_open_semaphore (void);
  144. #endif
  145. STPM_T* stpapi_stpm_find (int vlan_id);
  146. int stp_in_stpm_enable (int vlan_id, char* name,
  147.                     BITMAP_T* port_bmp,
  148.                     UID_STP_MODE_T admin_state);
  149. void* stp_in_stpm_create (int vlan_id, char* name, BITMAP_T* port_bmp,
  150.                           int* err_code);
  151. #endif /* _STP_MACHINE_H__ */
  152. #endif /* _STP_API_H__ */