// 网桥定时器初始化 // 在添加网桥时,同时创建网桥使用的定时器 // 调用路径:br_add_bridge->new_bridge_dev->br_stp_timer_init // 网桥使用的定时器:hello, tcn, tc, gc 1.1 void br_stp_timer_init(struct net_bridge *br) { //根网桥周期性向通过指定端口向其他网桥发送配置BPDU setup_timer(&br->hello_timer, br_hello_timer_expired, (unsigned long) br); //网桥检测到拓扑变化,通过根端口,发送TCN,直到接收到TCA标志的配置BPDU setup_timer(&br->tcn_timer, br_tcn_timer_expired, (unsigned long) br); //根网桥通过该定时器,在发送的配置BPDU中,设置TC标志,指示网络拓扑发生变化 setup_timer(&br->topology_change_timer, br_topology_change_timer_expired, (unsigned long) br); //垃圾回收,见转发数据库 setup_timer(&br->gc_timer, br_fdb_cleanup, (unsigned long) br); } // 端口定时器初始化 // 使能网桥端口的stp时,同时创建端口使用的定时器 // 调用路径:br_stp_enable_port->br_init_port->br_stp_port_timer_init 2.1 void br_stp_port_timer_init(struct net_bridge_port *p) { //用于端口使用的配置BPDU有效性 setup_timer(&p->message_age_timer, br_message_age_timer_expired, (unsigned long) p); //状态转移定时器 setup_timer(&p->forward_delay_timer, br_forward_delay_timer_expired, (unsigned long) p); //端口发送配置bpdu的速率限制定时器 setup_timer(&p->hold_timer, br_hold_timer_expired, (unsigned long) p); }
时间: 2024-10-31 10:45:49