|
@@ -26,7 +26,10 @@
|
|
|
#define BR_PORT_BITS 10
|
|
#define BR_PORT_BITS 10
|
|
|
#define BR_MAX_PORTS (1<<BR_PORT_BITS)
|
|
#define BR_MAX_PORTS (1<<BR_PORT_BITS)
|
|
|
|
|
|
|
|
-#define BR_VERSION "2.2"
|
|
|
|
|
|
|
+#define BR_VERSION "2.3"
|
|
|
|
|
+
|
|
|
|
|
+/* Path to usermode spanning tree program */
|
|
|
|
|
+#define BR_STP_PROG "/sbin/bridge-stp"
|
|
|
|
|
|
|
|
typedef struct bridge_id bridge_id;
|
|
typedef struct bridge_id bridge_id;
|
|
|
typedef struct mac_addr mac_addr;
|
|
typedef struct mac_addr mac_addr;
|
|
@@ -107,7 +110,13 @@ struct net_bridge
|
|
|
|
|
|
|
|
u8 group_addr[ETH_ALEN];
|
|
u8 group_addr[ETH_ALEN];
|
|
|
u16 root_port;
|
|
u16 root_port;
|
|
|
- unsigned char stp_enabled;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ enum {
|
|
|
|
|
+ BR_NO_STP, /* no spanning tree */
|
|
|
|
|
+ BR_KERNEL_STP, /* old STP in kernel */
|
|
|
|
|
+ BR_USER_STP, /* new RSTP in userspace */
|
|
|
|
|
+ } stp_enabled;
|
|
|
|
|
+
|
|
|
unsigned char topology_change;
|
|
unsigned char topology_change;
|
|
|
unsigned char topology_change_detected;
|
|
unsigned char topology_change_detected;
|
|
|
|
|
|
|
@@ -127,7 +136,6 @@ static inline int br_is_root_bridge(const struct net_bridge *br)
|
|
|
return !memcmp(&br->bridge_id, &br->designated_root, 8);
|
|
return !memcmp(&br->bridge_id, &br->designated_root, 8);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/* br_device.c */
|
|
/* br_device.c */
|
|
|
extern void br_dev_setup(struct net_device *dev);
|
|
extern void br_dev_setup(struct net_device *dev);
|
|
|
extern int br_dev_xmit(struct sk_buff *skb, struct net_device *dev);
|
|
extern int br_dev_xmit(struct sk_buff *skb, struct net_device *dev);
|
|
@@ -209,6 +217,7 @@ extern void br_become_designated_port(struct net_bridge_port *p);
|
|
|
/* br_stp_if.c */
|
|
/* br_stp_if.c */
|
|
|
extern void br_stp_enable_bridge(struct net_bridge *br);
|
|
extern void br_stp_enable_bridge(struct net_bridge *br);
|
|
|
extern void br_stp_disable_bridge(struct net_bridge *br);
|
|
extern void br_stp_disable_bridge(struct net_bridge *br);
|
|
|
|
|
+extern void br_stp_set_enabled(struct net_bridge *br, unsigned long val);
|
|
|
extern void br_stp_enable_port(struct net_bridge_port *p);
|
|
extern void br_stp_enable_port(struct net_bridge_port *p);
|
|
|
extern void br_stp_disable_port(struct net_bridge_port *p);
|
|
extern void br_stp_disable_port(struct net_bridge_port *p);
|
|
|
extern void br_stp_recalculate_bridge_id(struct net_bridge *br);
|
|
extern void br_stp_recalculate_bridge_id(struct net_bridge *br);
|