Linux协议栈网桥部分之主要数据结构
2012-01-12 20:59
357 查看
Linux网桥主要数据结构 struct net_bridge_fdb_entry { struct hlist_node hlist; //用于CAM表连接的链表指针 struct net_bridge_port *dst; //对应的物理接口指针,其中包含一个net_device的指针指向该物理网口 struct rcu_head rcu; //RCU锁 atomic_t use_count; //当前引用计数 unsigned long ageing_timer; //超时时间 mac_addr addr; //MAC地址 unsigned char is_local; //标明是否为本机MAC地址 unsigned char is_static; //标明是否为静态地址 }; struct net_bridge { spinlock_t lock; //自旋锁 struct list_head port_list; //桥组中的端口列表 struct net_device *dev; //网桥会建立一个虚拟设备来进行管理,这个设备的MAC地址是动态指定的,通常就是桥组中一个物理端口的MAC地址 struct net_device_stats statistics; //网桥中虚拟网卡的统计数据 spinlock_t hash_lock; //hash列表自旋锁 struct hlist_head hash[BR_HASH_SIZE]; //存放的是net_bridge_fdb_entry的哈希表,实际上就是mac和port的对应表 struct list_head age_list; unsigned long feature_mask; /*以下定义了STP协议所使用的信息*/ bridge_id designated_root; //DR bridge_id bridge_id; //这个成员一下是stp相关的信息 u32 root_path_cost; unsigned long max_age; unsigned long hello_time; unsigned long forward_delay; unsigned long bridge_max_age; unsigned long ageing_time; unsigned long bridge_hello_time; unsigned long bridge_forward_delay; u8 group_addr[ETH_ALEN]; u16 root_port; enum { BR_NO_STP, /* no spanning tree */ BR_KERNEL_STP, /* old STP in kernel */ BR_USER_STP, /* new RSTP in userspace */ } stp_enabled; unsigned char topology_change; unsigned char topology_change_detected; struct timer_list hello_timer; struct timer_list tcn_timer; struct timer_list topology_change_timer; struct timer_list gc_timer; struct kobject ifobj; }; //网桥中的端口,它实际上表示的是接收该数据包的网桥的端口的相关信息 struct net_bridge_port { struct net_bridge *br; //当前端口所在的briage struct net_device *dev; //此端口对应的物理端口 struct list_head list; //同一桥内的端口链表 /* STP */ u8 priority; u8 state; u16 port_no; unsigned char topology_change_ack; unsigned char config_pending; port_id port_id; port_id designated_port; bridge_id designated_root; bridge_id designated_bridge; u32 path_cost; u32 designated_cost; struct timer_list forward_delay_timer; struct timer_list hold_timer; struct timer_list message_age_timer; struct kobject kobj; struct rcu_head rcu; };
相关文章推荐
- 数据的存储结构主要有哪两种基本方法
- START WITH CONNECT BY PRIOR子句实现递归查询,主要用于查询数据中的树型结构关系[父子关系]
- 快速构建你的主要数据结构
- 数据操作中涉及到统计的部分主要借助数据库内置函数完成
- 第六章:数据结构基础。第三部分
- dazukofs 流程及主要数据结构
- xml主要数据结构
- libev学习笔记(一)——主要数据结构
- Mini-Notes: 数据结构与算法-[第三部分]排序
- Winpcap主要数据结构及函数
- 第六章:数据结构基础。第二部分
- 第三部分 数据结构 第 10 章 基本数据结构
- [redis读书笔记] 第一部分 数据结构与对象 对象特性
- 简单分析一下uboot的主要数据结构
- 大数据学习笔记之四十九 推荐算法的主要算法第二部分
- 刘汝佳训练指南实用数据结构部分总结
- linux i2c子系统代码分析1 ---概述以及主要数据结构
- FFMPEG-0.11.1分析之ffmpeg结构(简单涉及)与代码流程(主要涉及前部分的准备工作)
- 数据结构题典015:部分循环链表的逆转(ANSI C)
- 通达OA工作流主要表的数据结构