2005-04-17 02:20:36 +04:00
/*
* Linux ethernet bridge
*
* Authors :
* Lennert Buytenhek < buytenh @ gnu . org >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
# ifndef _BR_PRIVATE_STP_H
# define _BR_PRIVATE_STP_H
# define BPDU_TYPE_CONFIG 0
# define BPDU_TYPE_TCN 0x80
2011-04-04 18:03:33 +04:00
/* IEEE 802.1D-1998 timer values */
# define BR_MIN_HELLO_TIME (1*HZ)
# define BR_MAX_HELLO_TIME (10*HZ)
# define BR_MIN_FORWARD_DELAY (2*HZ)
# define BR_MAX_FORWARD_DELAY (30*HZ)
# define BR_MIN_MAX_AGE (6*HZ)
# define BR_MAX_MAX_AGE (40*HZ)
# define BR_MIN_PATH_COST 1
# define BR_MAX_PATH_COST 65535
2012-04-15 09:58:06 +04:00
struct br_config_bpdu {
unsigned int topology_change : 1 ;
unsigned int topology_change_ack : 1 ;
2005-04-17 02:20:36 +04:00
bridge_id root ;
int root_path_cost ;
bridge_id bridge_id ;
port_id port_id ;
int message_age ;
int max_age ;
int hello_time ;
int forward_delay ;
} ;
/* called under bridge lock */
static inline int br_is_designated_port ( const struct net_bridge_port * p )
{
return ! memcmp ( & p - > designated_bridge , & p - > br - > bridge_id , 8 ) & &
( p - > designated_port = = p - > port_id ) ;
}
/* br_stp.c */
extern void br_become_root_bridge ( struct net_bridge * br ) ;
extern void br_config_bpdu_generation ( struct net_bridge * ) ;
extern void br_configuration_update ( struct net_bridge * ) ;
extern void br_port_state_selection ( struct net_bridge * ) ;
2011-07-22 11:47:10 +04:00
extern void br_received_config_bpdu ( struct net_bridge_port * p ,
const struct br_config_bpdu * bpdu ) ;
2005-04-17 02:20:36 +04:00
extern void br_received_tcn_bpdu ( struct net_bridge_port * p ) ;
extern void br_transmit_config ( struct net_bridge_port * p ) ;
extern void br_transmit_tcn ( struct net_bridge * br ) ;
extern void br_topology_change_detection ( struct net_bridge * br ) ;
/* br_stp_bpdu.c */
extern void br_send_config_bpdu ( struct net_bridge_port * , struct br_config_bpdu * ) ;
extern void br_send_tcn_bpdu ( struct net_bridge_port * ) ;
# endif