2010-11-28 32 views
5

Libpcap ile iki cihazda dinlemeye çalışıyorum ama yine de hileyi nasıl yapacağımı anlayamıyorum. Cihazı "herhangi birine" ayarlamaya çalıştım ama işe yaramıyor. Ben dhcp röle ajanı yazmaya çalışıyorum, böylece eth0 ve eth1 dinlemem gerek.Libpcap ile iki cihazda aynı anda dinleme

Her biri farklı aygıt ve işleyiciye sahip iki adet pcap_loops oluşturmaya çalıştım ancak yalnızca ilk pcap_loop çalışıyor, ikincisi yoksayılıyor.

Bunun nasıl yapılacağı veya libpcap'ten çıkıp ham soketlerle yapmaya çalışmanın bir yolu var mı?

cevap

3

pcap_loop() öğenizi, her arabirim için ayrı ayrı iş parçacığınızda çalıştırmanız gerekir, bunu biz yaparız ve çalışır.

Libpcap'in bazı bölümleri, iş parçacığı güvenli değil, atleast pcap_setfilter(), bu nedenle kendi kilitlemenizi sağlayın.

İplik kullanmak istemiyorsanız, kendiniz için bir olay döngüsü sağlamanız gerekir; burada her aygıtın dosya tanımlayıcılarını select/poll veya benzerleriyle izlersiniz. Pcap_get_selectable_fd() ile bir aygıt tanıtıcısı için dosya tanıtıcısını alabilirsiniz.

+0

Teşekkürler :) Soketleri kullanarak sona erdi :) – Pirozek

İlgili konular