Pergunta

Eu corri um programa (o link é - http: // www. security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c ) em meu núcleo fedora 5. na compilação, eu recebo os seguintes erros:

[root@localhost ~]# gcc sniffer_eth_ip_tcp.c
    In file included from sniffer_eth_ip_tcp.c:12: /usr/include/linux/ip.h:97: error: expected specifier-qualifier-list before ‘uint8_t’
    In file included from /usr/include/linux/tcp.h:21,
                 from sniffer_eth_ip_tcp.c:13:
    /usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel header; include   <endian.h> instead!
    sniffer_eth_ip_tcp.c: In function ‘ParseIpHeader’:
    sniffer_eth_ip_tcp.c:147: error: ‘struct iphdr’ has no member named ‘daddr’
    sniffer_eth_ip_tcp.c:148: error: ‘struct iphdr’ has no member named ‘saddr’
    sniffer_eth_ip_tcp.c: In function ‘ParseTcpHeader’:
    sniffer_eth_ip_tcp.c:185: error: ‘struct iphdr’ has no member named ‘protocol’
    sniffer_eth_ip_tcp.c:187: error: ‘struct iphdr’ has no member named ‘ihl’

Mas, o iphdr struct no cabeçalho do arquivo correspondente contém a acima membros de dados mencionados. Alguém pode por favor me ajude ..

Foi útil?

Solução

A única maneira de obter esse erro é se o iphdr seu programa está se referindo não inclui os membros de dados. Assim, busca através de todos os seus inclui, cheque do DUP, etc. (também, você pode executar a fonte através de uma pré-compilação e descobrir tudo o que foi incluído, que normalmente fornece a sua resposta)

[editar]
run CPP em sua fonte para descobrir quais arquivos de cabeçalho estão incluídos (em que ordem). Se você tem um cabeçalho com a informação errada incluídos, antes de as informações corretas, você terá um problema. Em essência, incluem apenas os arquivos necessários no cabeçalho para compilar o programa
[/ Edit]

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