网络子系统32_网桥设备的开启与关闭

本文详细介绍了Linux内核中网桥设备的开启和关闭过程,涉及函数包括br_dev_open、br_stp_enable_bridge、br_stp_disable_bridge等。在开启网桥时,主要任务包括开启传输队列、使能网桥和配置BPDU的发送;而在关闭网桥时,主要任务是禁用网桥和关闭设备队列,同时处理端口状态的变更。这些操作对于理解网络子系统的STP(Spanning Tree Protocol)机制至关重要。
摘要由CSDN通过智能技术生成
//	开启网桥设备
//	调用路径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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值