Pergunta

pcap_compile() compila uma string em um programa de filtro na forma de um bpf_program estrutura. Em teoria, eu poderia salvar a forma compilada do programa e fornecê -lo para pcap_setfilter() em uma interface de rede diferente ou mesmo em uma máquina diferente.

Isso vai funcionar? É o bpf_program formar portátil em diferentes interfaces? Processos diferentes? Arquiteturas diferentes? Ou é mais seguro compilar a expressão cada vez que quero usá -la?

Com base na existência de pcap_open_dead() Suponho que seja um pouco portátil, mas o que é seguro e o que não é não parece ser explicado em nenhum lugar da documentação.

Foi útil?

Solução

Não, não é portátil em geral.

Você pode usá -los na mesma máquina.

Em máquinas semelhantes um pouco com segurança. Arquiteturas diferentes? Provavelmente não. Talvez se eles tiverem tipos semelhantes. Diferentes sistemas operacionais? Não. Eu não recomendo nada disso.

Se você realmente deseja ter certeza, basta compilar a expressão quando a usar. Realmente leva uma quantidade de tempo inconseqüente se você estiver fazendo isso raramente. Se você estiver trocando de expressões rapidamente, convém manter alguns por aí.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top