#ifndef _UID_STP_H__
#define _UID_STP_H__
#define STP_DBG 1
#define NAME_LEN 20
typedef enum {
STP_DISABLED,
STP_ENABLED
} UID_STP_MODE_T;
typedef struct {
unsigned short prio;
unsigned char addr[6];
} UID_BRIDGE_ID_T;
typedef struct {
char vlan_name[NAME_LEN];
char action;
} UID_STP_BR_CTRL_T;
#define BR_CFG_STATE (1L << 0)
#define BR_CFG_PRIO (1L << 1)
#define BR_CFG_AGE (1L << 2)
#define BR_CFG_HELLO (1L << 3)
#define BR_CFG_DELAY (1L << 4)
#define BR_CFG_FORCE_VER (1L << 5)
#define BR_CFG_AGE_MODE (1L << 6)
#define BR_CFG_AGE_TIME (1L << 7)
#define BR_CFG_HOLD_TIME (1L << 8)
#define BR_CFG_ALL BR_CFG_STATE | \
BR_CFG_PRIO | \
BR_CFG_AGE | \
BR_CFG_HELLO | \
BR_CFG_DELAY | \
BR_CFG_FORCE_VER | \
BR_CFG_AGE_MODE | \
BR_CFG_AGE_TIME | \
BR_CFG_HOLD_TIME
typedef struct {
unsigned long field_mask;
UID_STP_MODE_T stp_enabled;
char vlan_name[NAME_LEN];
int bridge_priority;
int max_age;
int hello_time;
int forward_delay;
int force_version;
int hold_time;
} UID_STP_CFG_T;
typedef struct {
char vlan_name[NAME_LEN];
unsigned long vlan_id;
UID_STP_MODE_T stp_enabled;
UID_BRIDGE_ID_T designated_root;
unsigned long root_path_cost;
unsigned long timeSince_Topo_Change;
unsigned long Topo_Change_Count;
unsigned char Topo_Change;
unsigned short root_port;
int max_age;
int hello_time;
int forward_delay;
UID_BRIDGE_ID_T bridge_id;
} UID_STP_STATE_T;
typedef enum {
UID_PORT_DISABLED = 0,
UID_PORT_DISCARDING,
UID_PORT_LEARNING,
UID_PORT_FORWARDING,
UID_PORT_NON_STP,
UID_PORT_BADSDU
} RSTP_PORT_STATE;
typedef unsigned short UID_PORT_ID;
typedef enum {
P2P_FORCE_TRUE,
P2P_FORCE_FALSE,
P2P_AUTO
} ADMIN_P2P_T;
#define PT_CFG_STATE (1L << 0)
#define PT_CFG_COST (1L << 1)
#define PT_CFG_PRIO (1L << 2)
#define PT_CFG_P2P (1L << 3)
#define PT_CFG_EDGE (1L << 4)
#define PT_CFG_MCHECK (1L << 5)
#define PT_CFG_NON_STP (1L << 6)
#ifdef STP_DBG
#define PT_CFG_DBG_SKIP_RX (1L << 16)
#define PT_CFG_DBG_SKIP_TX (1L << 17)
#endif
#define PT_CFG_ALL PT_CFG_STATE | \
PT_CFG_COST | \
PT_CFG_PRIO | \
PT_CFG_P2P | \
PT_CFG_EDGE | \
PT_CFG_MCHECK | \
PT_CFG_NON_STP
#define ADMIN_PORT_PATH_COST_AUTO 0
typedef struct {
unsigned long field_mask;
char vlan_name[NAME_LEN];
int port_priority;
unsigned long admin_port_path_cost;
ADMIN_P2P_T admin_point2point;
unsigned char admin_edge;
unsigned char admin_non_stp;
#ifdef STP_DBG
unsigned int skip_rx;
unsigned int skip_tx;
#endif
} UID_STP_PORT_CFG_T;
typedef struct {
char vlan_name[NAME_LEN];
unsigned int port_no;
UID_PORT_ID port_id;
RSTP_PORT_STATE state;
unsigned long path_cost;
UID_BRIDGE_ID_T designated_root;
unsigned long designated_cost;
UID_BRIDGE_ID_T designated_bridge;
UID_PORT_ID designated_port;
#if 0
int infoIs;
unsigned short handshake_flags;
#endif
unsigned long rx_cfg_bpdu_cnt;
unsigned long rx_rstp_bpdu_cnt;
unsigned long rx_tcn_bpdu_cnt;
int fdWhile;
int helloWhen;
int mdelayWhile;
int rbWhile;
int rcvdInfoWhile;
int rrWhile;
int tcWhile;
int txCount;
int lnkWhile;
unsigned long uptime;
unsigned long oper_port_path_cost;
unsigned char role;
unsigned char oper_point2point;
unsigned char oper_edge;
unsigned char oper_stp_neigb;
unsigned char top_change_ack;
unsigned char tc;
} UID_STP_PORT_STATE_T;
#endif