vector.h revision 10491:8893b747ecdf
150276Speter/************************************************************************ 250276Speter * RSTP library - Rapid Spanning Tree (802.1t, 802.1w) 362449Speter * Copyright (C) 2001-2003 Optical Access 450276Speter * Author: Alex Rozin 550276Speter * 650276Speter * This file is part of RSTP library. 750276Speter * 850276Speter * RSTP library is free software; you can redistribute it and/or modify it 950276Speter * under the terms of the GNU Lesser General Public License as published by the 1050276Speter * Free Software Foundation; version 2.1 1150276Speter * 1250276Speter * RSTP library is distributed in the hope that it will be useful, but 1350276Speter * WITHOUT ANY WARRANTY; without even the implied warranty of 1450276Speter * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser 1550276Speter * General Public License for more details. 1650276Speter * 1750276Speter * You should have received a copy of the GNU Lesser General Public License 1850276Speter * along with RSTP library; see the file COPYING. If not, write to the Free 1950276Speter * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 2050276Speter * 02111-1307, USA. 2150276Speter **********************************************************************/ 2250276Speter 2350276Speter/* STP priority vectors API : 17.4.2 */ 2450276Speter 2550276Speter#ifndef _PRIO_VECTOR_H__ 2650276Speter#define _PRIO_VECTOR_H__ 2750276Speter 2850276Speter#define STP_DBG 1 2950276Speter 3050276Spetertypedef struct bridge_id 3150276Speter{ 3262449Speter unsigned short prio; 3350276Speter unsigned char addr[6]; 3450276Speter} BRIDGE_ID; 3550276Speter 3650276Spetertypedef unsigned short PORT_ID; 3750276Speter 3850276Spetertypedef struct prio_vector_t { 3950276Speter BRIDGE_ID root_bridge; 4050276Speter unsigned long root_path_cost; 4150276Speter BRIDGE_ID design_bridge; 4250276Speter PORT_ID design_port; 4350276Speter PORT_ID bridge_port; 4450276Speter} PRIO_VECTOR_T; 4550276Speter 4650276Spetervoid 4750276SpeterSTP_VECT_create (OUT PRIO_VECTOR_T* t, 4850276Speter IN BRIDGE_ID* root_br, 4950276Speter IN unsigned long root_path_cost, 5050276Speter IN BRIDGE_ID* design_bridge, 5150276Speter IN PORT_ID design_port, 5250276Speter IN PORT_ID bridge_port); 5350276Spetervoid 5450276SpeterSTP_VECT_copy (OUT PRIO_VECTOR_T* t, IN PRIO_VECTOR_T* f); 5550276Speter 5650276Speterint 5750276SpeterSTP_VECT_compare_bridge_id (IN BRIDGE_ID* b1, IN BRIDGE_ID* b2); 5862449Speter 5962449Speterint 6062449SpeterSTP_VECT_compare_vector (IN PRIO_VECTOR_T* v1, IN PRIO_VECTOR_T* v2); 6150276Speter 6250276Spetervoid 6350276SpeterSTP_VECT_get_vector (IN BPDU_BODY_T* b, OUT PRIO_VECTOR_T* v); 6450276Speter 6550276Spetervoid 6650276SpeterSTP_VECT_set_vector (IN PRIO_VECTOR_T* v, OUT BPDU_BODY_T* b); 6750276Speter 6850276Speter#ifdef STP_DBG 6950276Spetervoid 7050276SpeterSTP_VECT_print (IN char* title, IN PRIO_VECTOR_T* v); 7150276Speter 7250276Spetervoid 7350276SpeterSTP_VECT_br_id_print (IN char *title, IN BRIDGE_ID* br_id, IN Bool cr); 7450276Speter 7550276Speter#endif 7650276Speter 7750276Speter#endif /* _PRIO_VECTOR_H__ */ 7850276Speter 7950276Speter 8062449Speter