Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192292
  • 博文数量: 45
  • 博客积分: 1577
  • 博客等级: 上尉
  • 技术积分: 476
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-01 16:40
个人简介

xxx

文章分类

全部博文(45)

文章存档

2012年(4)

2011年(14)

2010年(8)

2009年(19)

我的朋友

分类: LINUX

2009-12-12 22:27:08

struct packet_type {
    __be16            type;    /* This is really htons(ether_type). */
    struct net_device    *dev;    /* NULL is wildcarded here     */
    int            (*func) (struct sk_buff *,
                     struct net_device *,
                     struct packet_type *,
                     struct net_device *);
    struct sk_buff        *(*gso_segment)(struct sk_buff *skb,
                        int features);
    int            (*gso_send_check)(struct sk_buff *skb);
    void            *af_packet_priv;
    struct list_head    list;
};

这个结构是供属于不同协议的数据包使用的,用于数据链路层和网络层交互时,比如当有数据到来时通过其中的func指针调用网络层不同协议的函数来处理接收到的数据。

此结构的实例存储在ptype_base[]数组中

 

static struct packet_type ip_packet_type = {
    .type = __constant_htons(ETH_P_IP),
    .func = ip_rcv,
    .gso_send_check = inet_gso_send_check,
    .gso_segment = inet_gso_segment,
};

ip_packet_typepacket_type类型,当数据包属于ip类型时将用到此结构。

 

阅读(2243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~