Quão portátil é a saída do PCAP_COMPILE?
-
18-09-2019 - |
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.
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í.