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