// 开启网桥设备
// 调用路径dev_open->br_dev_open
// 函数主要任务:
// 1.开启传输队列
// 2.使能网桥
1.1 static int br_dev_open(struct net_device *dev)
{
//开启的传输功能,清除dev->state的__LINK_STATE_XOFF标志
netif_start_queue(dev);
br_stp_enable_bridge(dev->priv);//使能网桥
return 0;
}
// 使能网桥
// 调用路径dev_open->br_dev_open->br_stp_enable_bridge
// 函数主要任务:
// 1.设置网桥为根网桥
// 2.在每个指定端口上发送配置bpdu
// 3.使能网桥的每个端口
1.2 void br_stp_enable_bridge(struct net_bridge *br)
{
struct net_bridge_port *p;
spin_lock_bh(&br->lock);
mod_timer(&br->hello_timer, jiffies + br->hello_time);//更新发送helloBPDU定时器
br_config_bpdu_generation(br);//在每个使能的指定端口,发送配置BPDU,在端口被添加到网桥时,会自动指派其为指定端口,端口关闭时,也会被重置为指定角色
list_for_each_entry(p, &br->port_list, list) {//遍历此网桥的所有端口
if ((p->dev->flags & IFF_UP) && netif_carrier_ok(p->dev))//设备开启,检测dev->states是否清除了__LINK_STATE_NOCARRIER标志
br_st
网络子系统32_网桥设备的开启与关闭
最新推荐文章于 2022-08-24 16:24:19 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)