閱讀982 返回首頁    go 阿裏雲 go 技術社區[雲棲]


網絡子係統37_網橋、端口定時器

//	網橋定時器初始化
//		在添加網橋時,同時創建網橋使用的定時器
//	調用路徑: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);
}

最後更新:2017-04-03 14:53:53

  上一篇:go zoj 2290 GAME 博弈
  下一篇:go effective c++條款1:視C++為一個語言聯邦