why ip_frag_reasm() should check the head's frag_list ?
for kernel V2.6.23
static struct sk_buff *ip_frag_reasm(struct ipq *qp, struct net_device *dev)
{
...
if (skb_shinfo(head)->frag_list) {
...
}
...
}
the above red font statement implies that there are maybe some fragments associated with the head skb in its frag_list, but I have no idea that why the head has something in its frag_list.
As we know, after ip_push_pending_frames, the first skb's frag_list is used to link all following fragments, but after ip_fragment() is called, all fragments are sent out one by one, so when the receiver recives a fragment coming from the network, how can we expect that fragment's frag_list still has fragments with it? in other words, under what condition in ip_frag_reasm(), the head fragment'frag_list does have following fragments?
for higher versions above 2.6.23, there are still equivalent codes to the above example.
can any one help me with this question?
Last edited by jiufei; 10-20-2016 at 10:01 PM.
|