Question

J'ai couru un programme (le lien est - http: // www. security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c ) dans mon fedora core 5. compilation, je reçois les erreurs suivantes:

[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’

Mais, le iphdr struct dans le fichier d'en-tête correspondant contient les éléments de données mentionnés ci-dessus. quelqu'un peut-il s'il vous plaît aider ..

Était-ce utile?

La solution

La seule façon d'obtenir cette erreur est si le iphdr votre programme fait référence ne comprend pas les membres de données. Ainsi, la recherche dans tous vos comprend, vérifiez de dup, etc. (aussi, vous pouvez exécuter la source à travers une précompilation et découvrez tout ce qui a été inclus, qui fournit habituellement votre réponse)

[modifier]
exécutez cpp votre source pour savoir quels sont les fichiers d'en-tête sont inclus (dans quel ordre). Si vous avez un en-tête avec des informations erronées inclus avant l'information correcte, vous aurez un problème. En substance, uniquement les fichiers l'en-tête nécessaire pour compiler le programme
[/ Edit]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top