Chinaunix首页 | 论坛 | 博客
  • 博客访问: 378123
  • 博文数量: 56
  • 博客积分: 1449
  • 博客等级: 中尉
  • 技术积分: 822
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-08 10:24
文章分类

全部博文(56)

文章存档

2014年(7)

2012年(13)

2011年(10)

2010年(26)

分类: LINUX

2012-05-22 18:46:29


点击(此处)折叠或打开

  1. /*
  2.  *     Deliver IP Packets to the higher protocol layers.
  3.  */
  4. 主要功能:收集IP分片,然后调用ip_local_deliver_finish将一个完整的数据包传送给上层协议。
  5. int ip_local_deliver(struct sk_buff *skb)
  6. {
  7.     /*
  8.      *    Reassemble IP fragments.
  9.      */
  10.     /*
  11.      * 判断该IP数据包是否是一个分片,如果IP_MF置位,则表示该包是分片之一,其
  12.      * 后还有更多分片,最后一个IP分片未置位IP_MF但是其offset是非0。
  13.      * 如果是一个IP分片,则调用ip_defrag重新组织IP数据包。
  14.      */
  15.     if (ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) {
  16.         if (ip_defrag(skb, IP_DEFRAG_LOCAL_DELIVER))
  17.             return 0;
  18.     }
  19.     /* 调用ip_local_deliver_finish(skb) */
  20.     return NF_HOOK(PF_INET, NF_IP_LOCAL_IN, skb, skb->dev, NULL,
  21.          ip_local_deliver_finish);
  22. }

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