jccz_zys 发表于 2006-6-6 11:53:45

net_rx_action及ptype_all的问题

BBS 水木清华站 -- 文章阅读 [讨论区: KernelTech]

[分类讨论区] [返回版面] [返回文摘区] [快速返回]
--------------------------------------------------------------------------------
发信人: [email protected] (不变天), 信区: KernelTech
标题: net_rx_action的问题
发信站: Ncnipc_BBS (Fri Jan 18 17:50:37 2002)
转信站: SMTH!thunews.dhs.org!news.happynet.org!NcnipcBBS

这里一段,看来看去,如果ptype_all里面只有一个packet_type的话,就不执行?
//但是我用module的办法试过了,
//在ptype_all链表只有一个packet_type的时候,
//这个packet_type的func是能够获得skb的,怎么回事?
-----------
            pt_prev = NULL;
            for (ptype = ptype_all; ptype; ptype = ptype->next) {
                if (!ptype->dev || ptype->dev == skb->dev) {
                  if (pt_prev) { //就是这里,第一次的时候显然是NULL呀
                        if (!pt_prev->data) {
                            deliver_to_old_ones(pt_prev, skb, 0);
                        } else {
                            atomic_inc(&skb->users);
                            pt_prev->func(skb,
                                    skb->dev,
                                    pt_prev);
                        }
                  }
                  pt_prev = ptype;
                }
            }
--
※ 来源:·Ncnipc BBS bbs.nipc.org.cn·


--------------------------------------------------------------------------------
[分类讨论区] [返回版面] [返回文摘区] [快速返回]

crquan 发表于 2006-6-7 12:28:51

看看 deliver_to_old_ones 函数里面有调用。

jccz_zys 发表于 2006-6-7 15:40:38

第一次时候是根本不会进入
if (!pt_prev->data) {
deliver_to_old_ones(pt_prev, skb, 0);
} else {
atomic_inc(&skb->users);
pt_prev->func(skb,
skb->dev,
pt_prev);
}
这段代码的呀
页: [1]
查看完整版本: net_rx_action及ptype_all的问题