2010-11-28 20 views
5

Estoy tratando de escuchar en dos dispositivos con libpcap, pero todavía no puedo encontrar la manera de hacer el truco. Intenté configurar el dispositivo en "cualquiera", pero no funciona. Estoy tratando de escribir el agente de retransmisión dhcp, así que necesito escuchar en eth0 y eth1.Escuchando en dos dispositivos a la vez con libpcap

Intenté crear dos pcap_loops, cada uno con diferentes dispositivos y controladores, pero solo el primero pcap_loop funciona, el segundo se ignora.

¿Hay alguna manera de cómo hacer esto o debería dejar libpcap y tratar de hacerlo con sockets sin formato?

Respuesta

3

Tendrá que ejecutar su pcap_loop() en hilos separados, uno para cada interfaz, lo hacemos, y funciona.

Algunas partes de libpcap, sin embargo, no son seguras para hilos, al menos pcap_setfilter(), así que proporcione su propio bloqueo alrededor de eso.

Si no desea utilizar subprocesos, tendrá que proporcionar un bucle de eventos usted mismo, donde supervisa los descriptores de archivos de cada dispositivo con seleccionar/encuesta o similar. Puede obtener el descriptor de archivo para un manejador de dispositivo con pcap_get_selectable_fd().

+0

Gracias :) Terminé usando sockets :) – Pirozek

Cuestiones relacionadas