WEB开发网
开发学院软件开发Java 网桥在内核的实现 阅读

网桥在内核的实现

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示:接下来看net_bridge以及相关的数据结构: Java代码 structnet_bridge{///自旋锁spinlock_tlock;///网桥所有端口的链表,其中每个元素都是一个net_bridge_port结构,structlist_headport_list;///加到这个网桥的物理设备structnet_

接下来看net_bridge以及相关的数据结构:

Java代码 struct net_bridge 
{ 
///自旋锁 
 spinlock_t  lock; 
///网桥所有端口的链表,其中每个元素都是一个net_bridge_port结构。 
 struct list_head port_list; 
///加到这个网桥的物理设备 
 struct net_device *dev; 
///这个锁是用来保护下面的那个hash链表。 
 spinlock_t  hash_lock; 
///保存forwarding database的一个hash链表(这个也就是地址学习的东东,所以通过hash能 快速定位),这里每个元素都是一个net_bridge_fsb_entry结构 
 struct hlist_head hash[BR_HASH_SIZE]; 
///这个结构没有被使用 
 struct list_head age_list; 
 unsigned long  feature_mask; 
#ifdef CONFIG_BRIDGE_NETFILTER 
 struct rtable  fake_rtable; 
#endif 
 unsigned long  flags; 
#define BR_SET_MAC_ADDR 0x00000001 
 
///stp相关的一些东西 
 bridge_id  designated_root; 
 bridge_id  bridge_id; 
 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; 
 
///stp要用的一些定时器列表。 
 struct timer_list hello_timer; 
 struct timer_list tcn_timer; 
 struct timer_list topology_change_timer; 
 struct timer_list gc_timer; 
 struct kobject  *ifobj; 
};

1 2 3 4 5  下一页

Tags:网桥 内核 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接