1 /* 2 * Linux ethernet bridge 3 * 4 * Authors: 5 * Lennert Buytenhek <buytenh@gnu.org> 6 * 7 * $Id: br_private_stp.h,v 1.3 2001/02/05 06:03:47 davem Exp $ 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License 11 * as published by the Free Software Foundation; either version 12 * 2 of the License, or (at your option) any later version. 13 */ 14 15 #ifndef _BR_PRIVATE_STP_H 16 #define _BR_PRIVATE_STP_H 17 18 #define BPDU_TYPE_CONFIG 0 19 #define BPDU_TYPE_TCN 0x80 20 21 struct br_config_bpdu 22 { 23 unsigned topology_change:1; 24 unsigned topology_change_ack:1; 25 bridge_id root; 26 int root_path_cost; 27 bridge_id bridge_id; 28 port_id port_id; 29 int message_age; 30 int max_age; 31 int hello_time; 32 int forward_delay; 33 }; 34 35 /* br_stp.c */ 36 extern void br_become_root_bridge(struct net_bridge *br); 37 extern void br_config_bpdu_generation(struct net_bridge *); 38 extern void br_configuration_update(struct net_bridge *); 39 extern int br_is_designated_port(struct net_bridge_port *p); 40 extern int br_is_root_bridge(struct net_bridge *br); 41 extern void br_port_state_selection(struct net_bridge *); 42 extern void br_received_config_bpdu(struct net_bridge_port *p, struct br_config_bpdu *bpdu); 43 extern void br_received_tcn_bpdu(struct net_bridge_port *p); 44 extern void br_tick(unsigned long __data); 45 extern void br_transmit_config(struct net_bridge_port *p); 46 extern void br_transmit_tcn(struct net_bridge *br); 47 extern void br_topology_change_detection(struct net_bridge *br); 48 49 /* br_stp_bpdu.c */ 50 extern void br_send_config_bpdu(struct net_bridge_port *, struct br_config_bpdu *); 51 extern void br_send_tcn_bpdu(struct net_bridge_port *); 52 53 #endif 54