linux/net/bridge/br_private_stp.h
<<
>>
Prefs
   1/*
   2 *      Linux ethernet bridge
   3 *
   4 *      Authors:
   5 *      Lennert Buytenhek               <buytenh@gnu.org>
   6 *
   7 *      This program is free software; you can redistribute it and/or
   8 *      modify it under the terms of the GNU General Public License
   9 *      as published by the Free Software Foundation; either version
  10 *      2 of the License, or (at your option) any later version.
  11 */
  12
  13#ifndef _BR_PRIVATE_STP_H
  14#define _BR_PRIVATE_STP_H
  15
  16#define BPDU_TYPE_CONFIG 0
  17#define BPDU_TYPE_TCN 0x80
  18
  19/* IEEE 802.1D-1998 timer values */
  20#define BR_MIN_HELLO_TIME       (1*HZ)
  21#define BR_MAX_HELLO_TIME       (10*HZ)
  22
  23#define BR_MIN_FORWARD_DELAY    (2*HZ)
  24#define BR_MAX_FORWARD_DELAY    (30*HZ)
  25
  26#define BR_MIN_MAX_AGE          (6*HZ)
  27#define BR_MAX_MAX_AGE          (40*HZ)
  28
  29#define BR_MIN_PATH_COST        1
  30#define BR_MAX_PATH_COST        65535
  31
  32struct br_config_bpdu {
  33        unsigned int    topology_change:1;
  34        unsigned int    topology_change_ack:1;
  35        bridge_id       root;
  36        int             root_path_cost;
  37        bridge_id       bridge_id;
  38        port_id         port_id;
  39        int             message_age;
  40        int             max_age;
  41        int             hello_time;
  42        int             forward_delay;
  43};
  44
  45/* called under bridge lock */
  46static inline int br_is_designated_port(const struct net_bridge_port *p)
  47{
  48        return !memcmp(&p->designated_bridge, &p->br->bridge_id, 8) &&
  49                (p->designated_port == p->port_id);
  50}
  51
  52
  53/* br_stp.c */
  54void br_become_root_bridge(struct net_bridge *br);
  55void br_config_bpdu_generation(struct net_bridge *);
  56void br_configuration_update(struct net_bridge *);
  57void br_port_state_selection(struct net_bridge *);
  58void br_received_config_bpdu(struct net_bridge_port *p,
  59                             const struct br_config_bpdu *bpdu);
  60void br_received_tcn_bpdu(struct net_bridge_port *p);
  61void br_transmit_config(struct net_bridge_port *p);
  62void br_transmit_tcn(struct net_bridge *br);
  63void br_topology_change_detection(struct net_bridge *br);
  64void __br_set_topology_change(struct net_bridge *br, unsigned char val);
  65
  66/* br_stp_bpdu.c */
  67void br_send_config_bpdu(struct net_bridge_port *, struct br_config_bpdu *);
  68void br_send_tcn_bpdu(struct net_bridge_port *);
  69
  70#endif
  71