/usr/src/linux-2.6.19/include/linux/netdevice.h
struct packet_type {
__be16 type;
struct net_device *dev;
func();
gso_segment();
gso_send_check();
void *af_packet_priv;
struct list_head list;
};
每种协议都要定义一个packet_type结构,引导进入相关的协议数据处理函数,所有节点(packet_type结构)组成一个链表(HASH链表)。
一般各协议的packet_type结构都是静态存在,初始化时只提供type和func两个参数就可以了,每个协议在初始化时都要将此结构加入到系统类型链表中。
type 以太帧类型,16位
dev 所附着的网卡设备,如果为NULL则匹配全部网卡
func 协议入口接收处理函数
af_packet_priv 协议私有数据
list 链表扣