2019-05-27 09:55:01 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2005-04-17 02:20:36 +04:00
/*
* Linux ethernet bridge
*
* Authors :
* Lennert Buytenhek < buytenh @ gnu . org >
*/
# 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 */
2013-10-19 00:48:22 +04:00
void br_become_root_bridge ( struct net_bridge * br ) ;
void br_config_bpdu_generation ( struct net_bridge * ) ;
void br_configuration_update ( struct net_bridge * ) ;
void br_port_state_selection ( struct net_bridge * ) ;
void br_received_config_bpdu ( struct net_bridge_port * p ,
const struct br_config_bpdu * bpdu ) ;
void br_received_tcn_bpdu ( struct net_bridge_port * p ) ;
void br_transmit_config ( struct net_bridge_port * p ) ;
void br_transmit_tcn ( struct net_bridge * br ) ;
void br_topology_change_detection ( struct net_bridge * br ) ;
2016-12-10 21:44:28 +03:00
void __br_set_topology_change ( struct net_bridge * br , unsigned char val ) ;
2005-04-17 02:20:36 +04:00
/* br_stp_bpdu.c */
2013-10-19 00:48:22 +04:00
void br_send_config_bpdu ( struct net_bridge_port * , struct br_config_bpdu * ) ;
void br_send_tcn_bpdu ( struct net_bridge_port * ) ;
2005-04-17 02:20:36 +04:00
# endif