2016-03-19 20 views
2

Sürücü düzeyinde paket manipülasyonunu test etmek istiyorum. Gerekirse mevcut sürücü kodunu değiştirmem gerekiyor. NIC, Realtek 8101E'dir.Ağ kartına göndermeden önce paket nasıl değiştirilir?

Sürücünün akışını gördüm ve kendi veriyi ağ üzerinden göndermeden önce pakete eklemek istiyorum. Bu yüzden kaynağı okuduğumda, NIC paketin sahipliğini almadan hemen önce.

Sürücü kodunu değiştirmem gerekmesinin nedeni, daha sonra yeni verileri doldurmak için diğer donanım kayıtlarını kullanmam gerekebilir.

  1. xxx_xmit() fonksiyon gönderme paket değiştirmek için doğru yer olmalı mı?

  2. Paket manganlama kodumu xxx_xmit() işlevine doğrudan ekleyerek başka herhangi bir sonuç olacak mı?

cevap

1

İlk olarak, xmit geri aramada yapabilirsiniz. ancak bu geri bildirimin interrupt bağlamında (SOFTIRQ) çalıştığını unutmayın, bu nedenle numaralı işlemleri engelleyemezsiniz. İkinci olarak, xmit işlevindeki herhangi bir paket değişikliğinin, al işlevini almayı sağlayan alma işlevinde benzer bir "geri alma" kodu olması gerekir. paket üst katmanlardaki ağ filtresini kullanıyor

+0

Ancak, netfilter kancalarındaki donanım kayıtlarına erişebilirim, örneğin, ek verileri doldurmak için bazı donanım kayıtlarını kullanmam gerekirse, bu netfilter kancalarına erişebilir (POST YÖNLENDİRME). – Haswell

+0

sorun değil, fiziksel adresle ioremap kullanın ve örneğin okuyun/yazın: char * p = ioremap (ADDRESS, LEN); p [0] 0x200 =; –

+0

Eğer adrese kodlamak istemiyorsanız, bunun için bir modül parametresi kullanın –

İlgili konular