linux 内核协议栈收报流程(二)Netfilter全貌

ip层分片整理

int ip_local_deliver(struct sk_buff *skb)
{
/*
* Reassemble IP fragments.
*/

if (ip_is_fragment(ip_hdr(skb))) {
if (ip_defrag(skb, IP_DEFRAG_LOCAL_DELIVER))
return 0;
}

return NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, NULL, skb,
skb->dev, NULL,
ip_local_deliver_finish);
}

上述图中有个地方画错啦,IP_LOCAL_INPUT hook点完事后,走的应该是ip_local_deliver_finish函数

在该函数中就是调用上层协议的各个收报回调函数啦

原文地址:https://www.cnblogs.com/scottieyuyang/p/5794477.html