14eaa4710SRishi Srivatsavai /************************************************************************ 24eaa4710SRishi Srivatsavai * RSTP library - Rapid Spanning Tree (802.1t, 802.1w) 34eaa4710SRishi Srivatsavai * Copyright (C) 2001-2003 Optical Access 44eaa4710SRishi Srivatsavai * Author: Alex Rozin 54eaa4710SRishi Srivatsavai * 64eaa4710SRishi Srivatsavai * This file is part of RSTP library. 74eaa4710SRishi Srivatsavai * 84eaa4710SRishi Srivatsavai * RSTP library is free software; you can redistribute it and/or modify it 94eaa4710SRishi Srivatsavai * under the terms of the GNU Lesser General Public License as published by the 104eaa4710SRishi Srivatsavai * Free Software Foundation; version 2.1 114eaa4710SRishi Srivatsavai * 124eaa4710SRishi Srivatsavai * RSTP library is distributed in the hope that it will be useful, but 134eaa4710SRishi Srivatsavai * WITHOUT ANY WARRANTY; without even the implied warranty of 144eaa4710SRishi Srivatsavai * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser 154eaa4710SRishi Srivatsavai * General Public License for more details. 164eaa4710SRishi Srivatsavai * 174eaa4710SRishi Srivatsavai * You should have received a copy of the GNU Lesser General Public License 184eaa4710SRishi Srivatsavai * along with RSTP library; see the file COPYING. If not, write to the Free 194eaa4710SRishi Srivatsavai * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 204eaa4710SRishi Srivatsavai * 02111-1307, USA. 214eaa4710SRishi Srivatsavai **********************************************************************/ 224eaa4710SRishi Srivatsavai 234eaa4710SRishi Srivatsavai /* External management communication API definitions */ 244eaa4710SRishi Srivatsavai 254eaa4710SRishi Srivatsavai #ifndef _UID_STP_H__ 264eaa4710SRishi Srivatsavai #define _UID_STP_H__ 274eaa4710SRishi Srivatsavai 284eaa4710SRishi Srivatsavai #define STP_DBG 1 294eaa4710SRishi Srivatsavai 304eaa4710SRishi Srivatsavai #define NAME_LEN 20 314eaa4710SRishi Srivatsavai 324eaa4710SRishi Srivatsavai typedef enum { 334eaa4710SRishi Srivatsavai STP_DISABLED, 344eaa4710SRishi Srivatsavai STP_ENABLED 354eaa4710SRishi Srivatsavai } UID_STP_MODE_T; 364eaa4710SRishi Srivatsavai 374eaa4710SRishi Srivatsavai typedef struct { 384eaa4710SRishi Srivatsavai unsigned short prio; 394eaa4710SRishi Srivatsavai unsigned char addr[6]; 404eaa4710SRishi Srivatsavai } UID_BRIDGE_ID_T; 414eaa4710SRishi Srivatsavai 424eaa4710SRishi Srivatsavai typedef struct { 434eaa4710SRishi Srivatsavai char vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */ 444eaa4710SRishi Srivatsavai char action; /* 1-create, 0- delete */ 454eaa4710SRishi Srivatsavai } UID_STP_BR_CTRL_T; 464eaa4710SRishi Srivatsavai 474eaa4710SRishi Srivatsavai #define BR_CFG_STATE (1L << 0) 484eaa4710SRishi Srivatsavai #define BR_CFG_PRIO (1L << 1) 494eaa4710SRishi Srivatsavai #define BR_CFG_AGE (1L << 2) 504eaa4710SRishi Srivatsavai #define BR_CFG_HELLO (1L << 3) 514eaa4710SRishi Srivatsavai #define BR_CFG_DELAY (1L << 4) 524eaa4710SRishi Srivatsavai #define BR_CFG_FORCE_VER (1L << 5) 534eaa4710SRishi Srivatsavai #define BR_CFG_AGE_MODE (1L << 6) 544eaa4710SRishi Srivatsavai #define BR_CFG_AGE_TIME (1L << 7) 554eaa4710SRishi Srivatsavai #define BR_CFG_HOLD_TIME (1L << 8) 564eaa4710SRishi Srivatsavai #define BR_CFG_ALL BR_CFG_STATE | \ 574eaa4710SRishi Srivatsavai BR_CFG_PRIO | \ 584eaa4710SRishi Srivatsavai BR_CFG_AGE | \ 594eaa4710SRishi Srivatsavai BR_CFG_HELLO | \ 604eaa4710SRishi Srivatsavai BR_CFG_DELAY | \ 614eaa4710SRishi Srivatsavai BR_CFG_FORCE_VER | \ 624eaa4710SRishi Srivatsavai BR_CFG_AGE_MODE | \ 634eaa4710SRishi Srivatsavai BR_CFG_AGE_TIME | \ 644eaa4710SRishi Srivatsavai BR_CFG_HOLD_TIME 654eaa4710SRishi Srivatsavai 664eaa4710SRishi Srivatsavai typedef struct { 674eaa4710SRishi Srivatsavai /* service data */ 684eaa4710SRishi Srivatsavai unsigned long field_mask; /* which fields to change */ 694eaa4710SRishi Srivatsavai UID_STP_MODE_T stp_enabled; 704eaa4710SRishi Srivatsavai char vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */ 714eaa4710SRishi Srivatsavai 724eaa4710SRishi Srivatsavai /* protocol data */ 734eaa4710SRishi Srivatsavai int bridge_priority; 744eaa4710SRishi Srivatsavai int max_age; 754eaa4710SRishi Srivatsavai int hello_time; 764eaa4710SRishi Srivatsavai int forward_delay; 774eaa4710SRishi Srivatsavai int force_version; 784eaa4710SRishi Srivatsavai int hold_time; 794eaa4710SRishi Srivatsavai } UID_STP_CFG_T; 804eaa4710SRishi Srivatsavai 814eaa4710SRishi Srivatsavai typedef struct { 824eaa4710SRishi Srivatsavai /* service data */ 834eaa4710SRishi Srivatsavai char vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */ 844eaa4710SRishi Srivatsavai unsigned long vlan_id; 854eaa4710SRishi Srivatsavai UID_STP_MODE_T stp_enabled; 864eaa4710SRishi Srivatsavai 874eaa4710SRishi Srivatsavai /* protocol data */ 884eaa4710SRishi Srivatsavai UID_BRIDGE_ID_T designated_root; 894eaa4710SRishi Srivatsavai unsigned long root_path_cost; 904eaa4710SRishi Srivatsavai 914eaa4710SRishi Srivatsavai unsigned long timeSince_Topo_Change; /* 14.8.1.1.3.b: TBD */ 924eaa4710SRishi Srivatsavai unsigned long Topo_Change_Count; /* 14.8.1.1.3.c: TBD */ 934eaa4710SRishi Srivatsavai unsigned char Topo_Change; /* 14.8.1.1.3.d: TBD */ 944eaa4710SRishi Srivatsavai 954eaa4710SRishi Srivatsavai unsigned short root_port; 964eaa4710SRishi Srivatsavai int max_age; 974eaa4710SRishi Srivatsavai int hello_time; 984eaa4710SRishi Srivatsavai int forward_delay; 994eaa4710SRishi Srivatsavai UID_BRIDGE_ID_T bridge_id; 1004eaa4710SRishi Srivatsavai } UID_STP_STATE_T; 1014eaa4710SRishi Srivatsavai 1024eaa4710SRishi Srivatsavai typedef enum { 1034eaa4710SRishi Srivatsavai UID_PORT_DISABLED = 0, 1044eaa4710SRishi Srivatsavai UID_PORT_DISCARDING, 1054eaa4710SRishi Srivatsavai UID_PORT_LEARNING, 1064eaa4710SRishi Srivatsavai UID_PORT_FORWARDING, 1074eaa4710SRishi Srivatsavai UID_PORT_NON_STP, 1084eaa4710SRishi Srivatsavai UID_PORT_BADSDU 1094eaa4710SRishi Srivatsavai } RSTP_PORT_STATE; 1104eaa4710SRishi Srivatsavai 1114eaa4710SRishi Srivatsavai typedef unsigned short UID_PORT_ID; 1124eaa4710SRishi Srivatsavai 1134eaa4710SRishi Srivatsavai typedef enum { 1144eaa4710SRishi Srivatsavai P2P_FORCE_TRUE, 1154eaa4710SRishi Srivatsavai P2P_FORCE_FALSE, 1164eaa4710SRishi Srivatsavai P2P_AUTO 1174eaa4710SRishi Srivatsavai } ADMIN_P2P_T; 1184eaa4710SRishi Srivatsavai 1194eaa4710SRishi Srivatsavai #define PT_CFG_STATE (1L << 0) 1204eaa4710SRishi Srivatsavai #define PT_CFG_COST (1L << 1) 1214eaa4710SRishi Srivatsavai #define PT_CFG_PRIO (1L << 2) 1224eaa4710SRishi Srivatsavai #define PT_CFG_P2P (1L << 3) 1234eaa4710SRishi Srivatsavai #define PT_CFG_EDGE (1L << 4) 1244eaa4710SRishi Srivatsavai #define PT_CFG_MCHECK (1L << 5) 1254eaa4710SRishi Srivatsavai #define PT_CFG_NON_STP (1L << 6) 1264eaa4710SRishi Srivatsavai #ifdef STP_DBG 1274eaa4710SRishi Srivatsavai #define PT_CFG_DBG_SKIP_RX (1L << 16) 1284eaa4710SRishi Srivatsavai #define PT_CFG_DBG_SKIP_TX (1L << 17) 1294eaa4710SRishi Srivatsavai #endif 1304eaa4710SRishi Srivatsavai 1314eaa4710SRishi Srivatsavai #define PT_CFG_ALL PT_CFG_STATE | \ 1324eaa4710SRishi Srivatsavai PT_CFG_COST | \ 1334eaa4710SRishi Srivatsavai PT_CFG_PRIO | \ 1344eaa4710SRishi Srivatsavai PT_CFG_P2P | \ 1354eaa4710SRishi Srivatsavai PT_CFG_EDGE | \ 1364eaa4710SRishi Srivatsavai PT_CFG_MCHECK | \ 137*55fea89dSDan Cross PT_CFG_NON_STP 1384eaa4710SRishi Srivatsavai 1394eaa4710SRishi Srivatsavai #define ADMIN_PORT_PATH_COST_AUTO 0 1404eaa4710SRishi Srivatsavai 1414eaa4710SRishi Srivatsavai typedef struct { 1424eaa4710SRishi Srivatsavai /* service data */ 1434eaa4710SRishi Srivatsavai unsigned long field_mask; /* which fields to change */ 1444eaa4710SRishi Srivatsavai char vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */ 1454eaa4710SRishi Srivatsavai 1464eaa4710SRishi Srivatsavai /* protocol data */ 1474eaa4710SRishi Srivatsavai int port_priority; 1484eaa4710SRishi Srivatsavai unsigned long admin_port_path_cost; /* ADMIN_PORT_PATH_COST_AUTO - auto sence */ 1494eaa4710SRishi Srivatsavai ADMIN_P2P_T admin_point2point; 1504eaa4710SRishi Srivatsavai unsigned char admin_edge; 1514eaa4710SRishi Srivatsavai unsigned char admin_non_stp; /* 1- doesn't participate in STP, 1 - regular */ 1524eaa4710SRishi Srivatsavai #ifdef STP_DBG 1534eaa4710SRishi Srivatsavai unsigned int skip_rx; 1544eaa4710SRishi Srivatsavai unsigned int skip_tx; 1554eaa4710SRishi Srivatsavai #endif 1564eaa4710SRishi Srivatsavai 1574eaa4710SRishi Srivatsavai } UID_STP_PORT_CFG_T; 1584eaa4710SRishi Srivatsavai 1594eaa4710SRishi Srivatsavai typedef struct { 1604eaa4710SRishi Srivatsavai /* service data */ 1614eaa4710SRishi Srivatsavai char vlan_name[NAME_LEN]; /* name of the VLAN, key of the bridge */ 1624eaa4710SRishi Srivatsavai unsigned int port_no; /* key of the entry */ 1634eaa4710SRishi Srivatsavai 1644eaa4710SRishi Srivatsavai /* protocol data */ 1654eaa4710SRishi Srivatsavai UID_PORT_ID port_id; 1664eaa4710SRishi Srivatsavai RSTP_PORT_STATE state; 1674eaa4710SRishi Srivatsavai unsigned long path_cost; 1684eaa4710SRishi Srivatsavai 1694eaa4710SRishi Srivatsavai UID_BRIDGE_ID_T designated_root; 1704eaa4710SRishi Srivatsavai unsigned long designated_cost; 1714eaa4710SRishi Srivatsavai UID_BRIDGE_ID_T designated_bridge; 1724eaa4710SRishi Srivatsavai UID_PORT_ID designated_port; 1734eaa4710SRishi Srivatsavai 1744eaa4710SRishi Srivatsavai #if 0 1754eaa4710SRishi Srivatsavai int infoIs; 1764eaa4710SRishi Srivatsavai unsigned short handshake_flags; 1774eaa4710SRishi Srivatsavai #endif 1784eaa4710SRishi Srivatsavai 1794eaa4710SRishi Srivatsavai unsigned long rx_cfg_bpdu_cnt; 1804eaa4710SRishi Srivatsavai unsigned long rx_rstp_bpdu_cnt; 1814eaa4710SRishi Srivatsavai unsigned long rx_tcn_bpdu_cnt; 1824eaa4710SRishi Srivatsavai int fdWhile; /* 17.15.1 */ 1834eaa4710SRishi Srivatsavai int helloWhen; /* 17.15.2 */ 1844eaa4710SRishi Srivatsavai int mdelayWhile; /* 17.15.3 */ 1854eaa4710SRishi Srivatsavai int rbWhile; /* 17.15.4 */ 1864eaa4710SRishi Srivatsavai int rcvdInfoWhile;/* 17.15.5 */ 1874eaa4710SRishi Srivatsavai int rrWhile; /* 17.15.6 */ 1884eaa4710SRishi Srivatsavai int tcWhile; /* 17.15.7 */ 1894eaa4710SRishi Srivatsavai int txCount; /* 17.18.40 */ 1904eaa4710SRishi Srivatsavai int lnkWhile; 1914eaa4710SRishi Srivatsavai 1924eaa4710SRishi Srivatsavai unsigned long uptime; /* 14.8.2.1.3.a */ 1934eaa4710SRishi Srivatsavai unsigned long oper_port_path_cost; 1944eaa4710SRishi Srivatsavai unsigned char role; 1954eaa4710SRishi Srivatsavai unsigned char oper_point2point; 1964eaa4710SRishi Srivatsavai unsigned char oper_edge; 1974eaa4710SRishi Srivatsavai unsigned char oper_stp_neigb; 1984eaa4710SRishi Srivatsavai unsigned char top_change_ack; 1994eaa4710SRishi Srivatsavai unsigned char tc; 2004eaa4710SRishi Srivatsavai } UID_STP_PORT_STATE_T; 2014eaa4710SRishi Srivatsavai 2024eaa4710SRishi Srivatsavai #endif 203