forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.7 KiB
66 lines
1.7 KiB
/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|
/* |
|
* Linux ethernet bridge |
|
* |
|
* Authors: |
|
* Lennert Buytenhek <[email protected]> |
|
*/ |
|
|
|
#ifndef _BR_PRIVATE_STP_H |
|
#define _BR_PRIVATE_STP_H |
|
|
|
#define BPDU_TYPE_CONFIG 0 |
|
#define BPDU_TYPE_TCN 0x80 |
|
|
|
/* 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 |
|
|
|
struct br_config_bpdu { |
|
unsigned int topology_change:1; |
|
unsigned int topology_change_ack:1; |
|
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 */ |
|
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); |
|
void __br_set_topology_change(struct net_bridge *br, unsigned char val); |
|
|
|
/* br_stp_bpdu.c */ |
|
void br_send_config_bpdu(struct net_bridge_port *, struct br_config_bpdu *); |
|
void br_send_tcn_bpdu(struct net_bridge_port *); |
|
|
|
#endif
|
|
|