Estou tentando fazer com que um aplicativo seja executado corretamente, mas parece não conseguir encontrar nenhuma interface de rede. Ele é projetado para ser executado sem direitos administrativos e, portanto, requer recursos de arquivo específicos. No entanto, ainda é incapaz de encontrar qualquer interface de rede através da libpcap.
Eu testei um script simples para replicar o comportamento usando o libpcap para listar interfaces de rede para testar o problema:
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[]) {
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
if(dev == NULL) {
printf("Error: %s\n", errbuf);
return(2);
}
printf("Device: %s\n", dev);
return(0);
}
Aplicando recursos de arquivo e verificando se eles foram aplicados,
$ sudo setcap cap_net_raw,cap_net_admin=eip pcap_test
$ getcap pcap_test
pcap_test = cap_net_admin,cap_net_raw+eip
Ainda não é possível encontrar nenhuma interface de rede, embora ela afirme ter as permissões corretas. Correr como super usuário funciona sem problema, claro.
$ ./pcap_test
Error: no suitable device found
$ sudo ./pcap_test
Device: eth0
Passar por essa sequência idêntica funciona como desejado no Ubuntu 14.04 (com a versão do kernel 3.13.0-35-generic e versões anteriores), mas não consegui fazer com que ela funcionasse com o Mint 17 ou 17.1 ( com a versão do kernel 3.13.0-24-generic).
Há alguma alteração no kernel que afeta os recursos de arquivo? Qualquer coisa relevante que eu tenha encontrado on-line tem vários anos e está em referência a um kernel desatualizado. Obrigado!