mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
2874c5fd28
Based on 1 normalized pattern(s): 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 extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
67 lines
1.7 KiB
C
67 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* 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
|
|
|
|
/* 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
|