1*55fea89dSDan Cross /************************************************************************ 2*55fea89dSDan Cross * RSTP library - Rapid Spanning Tree (802.1t, 802.1w) 3*55fea89dSDan Cross * Copyright (C) 2001-2003 Optical Access 4*55fea89dSDan Cross * Author: Alex Rozin 54eaa4710SRishi Srivatsavai * 64eaa4710SRishi Srivatsavai * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 74eaa4710SRishi Srivatsavai * Use is subject to license terms. 8*55fea89dSDan Cross * 9*55fea89dSDan Cross * This file is part of RSTP library. 10*55fea89dSDan Cross * 11*55fea89dSDan Cross * RSTP library is free software; you can redistribute it and/or modify it 12*55fea89dSDan Cross * under the terms of the GNU Lesser General Public License as published by the 13*55fea89dSDan Cross * Free Software Foundation; version 2.1 14*55fea89dSDan Cross * 15*55fea89dSDan Cross * RSTP library is distributed in the hope that it will be useful, but 16*55fea89dSDan Cross * WITHOUT ANY WARRANTY; without even the implied warranty of 17*55fea89dSDan Cross * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser 18*55fea89dSDan Cross * General Public License for more details. 19*55fea89dSDan Cross * 20*55fea89dSDan Cross * You should have received a copy of the GNU Lesser General Public License 21*55fea89dSDan Cross * along with RSTP library; see the file COPYING. If not, write to the Free 22*55fea89dSDan Cross * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 23*55fea89dSDan Cross * 02111-1307, USA. 244eaa4710SRishi Srivatsavai **********************************************************************/ 254eaa4710SRishi Srivatsavai 264eaa4710SRishi Srivatsavai #ifndef __STP_VECTORS_H__ 274eaa4710SRishi Srivatsavai #define __STP_VECTORS_H__ 284eaa4710SRishi Srivatsavai 294eaa4710SRishi Srivatsavai /* This file defines callback vectors to be supplied by library user */ 304eaa4710SRishi Srivatsavai 314eaa4710SRishi Srivatsavai /* In the best case: clean all Learning entries with 324eaa4710SRishi Srivatsavai the vlan_id and the port (if 'exclude'=0) or for all ports, 334eaa4710SRishi Srivatsavai exclude the port (if ''exclude'=1). If 'port'=0, delete all 344eaa4710SRishi Srivatsavai entries with the vlan_id, don't care to 'exclude' */ 354eaa4710SRishi Srivatsavai typedef enum { 364eaa4710SRishi Srivatsavai LT_FLASH_ALL_PORTS_EXCLUDE_THIS, 374eaa4710SRishi Srivatsavai LT_FLASH_ONLY_THE_PORT 384eaa4710SRishi Srivatsavai } LT_FLASH_TYPE_T; 394eaa4710SRishi Srivatsavai 404eaa4710SRishi Srivatsavai struct stp_vectors { 414eaa4710SRishi Srivatsavai int (*flush_lt)(IN int port_index, IN int vlan_id, 424eaa4710SRishi Srivatsavai IN LT_FLASH_TYPE_T type, IN char* reason); 434eaa4710SRishi Srivatsavai 444eaa4710SRishi Srivatsavai /* for bridge id calculation */ 454eaa4710SRishi Srivatsavai void (*get_port_mac) (IN int port_index, OUT unsigned char* mac); 464eaa4710SRishi Srivatsavai 474eaa4710SRishi Srivatsavai unsigned long (*get_port_oper_speed) (IN unsigned int portNo); 484eaa4710SRishi Srivatsavai 494eaa4710SRishi Srivatsavai /* 1- Up, 0- Down */ 504eaa4710SRishi Srivatsavai int (*get_port_link_status) (IN int port_index); 514eaa4710SRishi Srivatsavai 524eaa4710SRishi Srivatsavai /* 1- Full, 0- Half */ 534eaa4710SRishi Srivatsavai int (*get_duplex) (IN int port_index); 544eaa4710SRishi Srivatsavai 554eaa4710SRishi Srivatsavai #ifdef STRONGLY_SPEC_802_1W 564eaa4710SRishi Srivatsavai int (*set_learning) (IN int port_index, IN int vlan_id, IN int enable); 574eaa4710SRishi Srivatsavai int (*set_forwarding) (IN int port_index, IN int vlan_id, 584eaa4710SRishi Srivatsavai IN int enable); 594eaa4710SRishi Srivatsavai #else 604eaa4710SRishi Srivatsavai /* 614eaa4710SRishi Srivatsavai * In many kinds of hardware the state of ports may 624eaa4710SRishi Srivatsavai * be changed with another method 634eaa4710SRishi Srivatsavai */ 644eaa4710SRishi Srivatsavai int (*set_port_state) (IN int port_index, IN int vlan_id, 654eaa4710SRishi Srivatsavai IN RSTP_PORT_STATE state); 664eaa4710SRishi Srivatsavai #endif 674eaa4710SRishi Srivatsavai 684eaa4710SRishi Srivatsavai int (*set_hardware_mode) (int vlan_id, UID_STP_MODE_T mode); 694eaa4710SRishi Srivatsavai int (*tx_bpdu) (IN int port_index, IN int vlan_id, 704eaa4710SRishi Srivatsavai IN unsigned char* bpdu, 714eaa4710SRishi Srivatsavai IN size_t bpdu_len); 724eaa4710SRishi Srivatsavai const char *(*get_port_name) (IN int port_index); 734eaa4710SRishi Srivatsavai int (*get_init_stpm_cfg) (IN int vlan_id, 744eaa4710SRishi Srivatsavai INOUT UID_STP_CFG_T* cfg); 754eaa4710SRishi Srivatsavai int (*get_init_port_cfg) (IN int vlan_id, 764eaa4710SRishi Srivatsavai IN int port_index, 774eaa4710SRishi Srivatsavai INOUT UID_STP_PORT_CFG_T* cfg); 784eaa4710SRishi Srivatsavai void (*trace)(const char *fmt, ...); 794eaa4710SRishi Srivatsavai }; 804eaa4710SRishi Srivatsavai 814eaa4710SRishi Srivatsavai #ifndef __STP_VECTORS_T__ 824eaa4710SRishi Srivatsavai #define __STP_VECTORS_T__ 834eaa4710SRishi Srivatsavai typedef struct stp_vectors STP_VECTORS_T; 844eaa4710SRishi Srivatsavai #endif 854eaa4710SRishi Srivatsavai 864eaa4710SRishi Srivatsavai #ifdef __STP_INTERNAL__ 874eaa4710SRishi Srivatsavai extern STP_VECTORS_T *stp_vectors; 884eaa4710SRishi Srivatsavai #endif 894eaa4710SRishi Srivatsavai 904eaa4710SRishi Srivatsavai #endif /* __STP_VECTORS_H__ */ 91