http://blog.csdn.net/lickylin/article/details/20401535
网桥转发数据库的代码分析
对于函数br_fdb_update来说,提供的有效信息并不是简单的更新fdb entry那么简单。
首先对于fdb entry建立的分类,我们分析一下:
1、local标签的fdb entry添加
我们知道,在添加网桥端口时,我们会调用br_fdb_insert创建一个local的fdb entry。如果
一个网桥下有4个网桥端口,而4个网桥端口的mac地址是相同的,则在执行brctl addif
时,只会将第一个网桥端口与该本地mac地址对应的fdb entry相关联。
2、非local标签的fdb entry添加
这类fdb entry是通过网桥的mac地址学习得到的。是由处理入口流量的br_handle_frame
间接调用生成的。
然后,我们再回到br_fdb_update,在该函数里,若发现要update的mac地址所对应的
fdb entry已经存在,函数还会判断这个fdb entry是否是local的。若是local的,说明什么了
呢?说明br_handle_frame处理的入口数据包的mac地址是属于网桥端口的,这就说明了
该网桥下的桥接端口出现了环路。这就是该函数的另一大功能,通过该函数
我们能判断网桥下的端口是否环路了。
http://blog.csdn.net/linyt/article/details/5191512