sk_buff sonraki parçalanma verilerini saklayabilir iki yer vardır:Fark
skb_shinfo(head)->frag_list
skb_shinfo(head)->frags[]
birisi parçalanması işlemek için bu iki yolu arasındaki farkları açıklayınız olabilir.
Teşekkür ve Saygılarımızla!
sk_buff sonraki parçalanma verilerini saklayabilir iki yer vardır:Fark
skb_shinfo(head)->frag_list
skb_shinfo(head)->frags[]
birisi parçalanması işlemek için bu iki yolu arasındaki farkları açıklayınız olabilir.
Teşekkür ve Saygılarımızla!
Her ikisi de farklı durumlar için kullanılır.
frag []
cihazınız I/O ve bunu vb verilerin birleştirilmesi yapmak istiyorum dağınık toplamak destekler .. Eğer 2 fragmanı dek ile başlayan frag [] yapısını doldurabilirsiniz nth fragmanı. İlk parça her zaman veri ve kuyruk işaretçiler tarafından belirtilir. Fragmanların geri kalanı frags [] yapısında doldurulur. Dağılım toplamasını kullanmazsanız, bu değişken boştur.
frag_list
Bu IP parçacıkları listesidir. Bu ip_push_pending_frames sırasında doldurulur. [] frag_list olan
i dağınık toplamak için/vardır o tamponlar sizin sk_buffs ip_push_pending_frames sonra
sk_buff0->next = sk_buff1
sk_buff1->next = sk_buff2
...
sk_buffn-1->next = sk_buffn
sk_buff0->frag_list = sk_buff1
sk_buff1->next = sk_buff2
...
sk_buffn-1->next = sk_buffn
Basitçe
frag koymak adlandırılan bu müdürlüğünce olan Say ip parçaları için
kernel 3.1 NIC __ip_append_data skb_shinfo kullanıcı alanı verileri kopyalar SG/Ç (baş) destekliyorsa> frag []
- -> frag, aksi takdirde bu işlevi bir liste yapacak (baş) 7
skb_shinfo kullanıcı alanı verileriyle dolu skbs ve skb> sk_write_queue içinde sıraya alınacaktır.
skb_shinfo (baş) -> frag_list
Bu üye IP parçacıkları kullanılır. SK-> sk_write_queue ve frag_list işlemek için çek ip_fragment()
kuyruğa skbs ile frag_list doldurulmasına ilişkin kontrol ip_push_pending_frames()->ip_finish_skb()
.
Çok teşekkürler Bjxt! açıklamanız çok açık. Şimdi ne kadar farklı olduklarını biliyorum. –