Pregunta

pcap_compile() compila una cadena en un programa de filtro en forma de una estructura bpf_program. En teoría pudiera salvar la forma compilada del programa y suministrarla a pcap_setfilter() en una interfaz de red diferente o incluso en una máquina diferente.

¿Funcionará? Es la forma portátil bpf_program a través de diferentes interfaces? Diferentes procesos? Diferentes arquitecturas? ¿O es más seguro para compilar la expresión cada vez que quiera usarlo?

Sobre la base de la existencia de pcap_open_dead() supongo que es algo portátil, pero lo que es seguro y lo que no es no parece ser indicados en cualquier lugar de la documentación.

¿Fue útil?

Solución

No, no es portátil en general.

Puede usarlos en la misma máquina.

En las máquinas similares tanto en forma segura. Diferentes arquitecturas? Probablemente no. Tal vez si tienen tipos similares. Los diferentes sistemas operativos? No. No lo recomiendo cualquiera de ellos sin embargo.

Si realmente quiere estar seguro, simplemente compilar la expresión cuando se utiliza. Realmente se necesita una cantidad insignificante de tiempo si lo estás haciendo rara vez es suficiente. Si usted está cambiando rápidamente expresiones, es posible que desee mantener un pocos alrededor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top