linux网络协议栈分析笔记5-IP层的处理1

本文详细分析了Linux操作系统中IP层网络协议栈的工作原理,涵盖了数据包的接收、处理流程,以及关键函数和数据结构的作用。通过对IP头的解析,深入理解IP层在网络传输中的角色。
摘要由CSDN通过智能技术生成
前几章稍分析了网桥,接着我们继续1中的收包流程,说到
对该数据包转达到其他L3协议的处理函数:
type = skb->protocol;
list_for_each_entry_rcu(ptype,
               & ptype_base[ntohs( type) & PTYPE_HASH_MASK], list) {
          if (ptype->type == type &&
              (ptype->dev == null_or_orig || ptype->dev == skb->dev ||
               ptype->dev == orig_dev)) {
               if (pt_prev)
                    ret = deliver_skb(skb, pt_prev, orig_dev);
               pt_prev = ptype;
          }
     }
->static inline int deliver_skb(struct sk_buff *skb,
                     struct packet_type *pt_prev,
                     struct net_device *orig_dev)
     {
          atomic_inc(&skb->users);
           return pt_prev-> func (skb, skb->dev, pt_prev, orig_dev);
     }
ptype_base :         协议模块通过dev_add_pack()加入     arp  pppoe  ip等

我们看ptype_base的建立
void dev_add_pack(struct packet_type *pt)
{
     int hash;

     spin_lock_bh(&am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值