6
votes

Transmettre un argument sur la libpcap pcap_loop () rappel ()

Parce que je voudrais faire des tests avec le libpcap et un petit programme C, je J'essaie de passer une structure de Main () à Got_Packet (). Après avoir lu le tutoriel libpcap, j'avais trouvé ceci:

Le prototype de pcap_loop () est Ci-dessous: p> blockQuote> xxx pré>

Le dernier argument est utile dans certains les applications, mais plusieurs fois est simplement définir comme null. Supposons que nous ayons des arguments de nos propres que nous souhaitons envoyer à notre Fonction de rappel, en plus de la arguments que pcap_loop () envoie. Cette est où nous le faisons. Évidemment, vous devez tycaire à un pointeur U_char pour vous assurer Les résultats le rendent correctement; Comme nous le verrons plus tard, PCAP utilise de certains moyens très intéressants de transmettre des informations sous la forme d'un u_charn pointeur. p> BlockQuote>

Donc, selon cela, il est possible d'envoyer la structure dans got_packet () à l'aide de l'argument numéro 4 de pcap_loop (). Mais après avoir essayé, je reçois une erreur. P>

voici mon code (buggé): p> xxx pré>

i obtenir ce type d'erreur après quelques tests:

gcc -c got_packet.c -o got_packet.o
got_packet.c: In function ‘got_packet’:
got_packet.c:25: error: invalid type argument of ‘->’


2 commentaires

((configuration *) args) [0] -> ID ???


Merci pour votre réponse ; Après avoir essayé qu'il ne fonctionne pas ... $ CARE GCC -C GOT_PACKET.C -O GOT_PACKET.O GOT_PACKET.C: EN FONCTION 'GOT_PACKET': GOT_PACKET.C: 28: ERREUR: 'Configuration' non déclaré (première utilisation dans cette fonction) GOT_PACKET.C: 28: ERREUR: (chaque identifiant non déclaré est signalé une fois que got_packet.c: 28: Erreur: Pour chaque fonction, il apparaît dans.) got_packet.c: 28: Erreur: erreur de syntaxe avant ')' Token got_packet.c : 94: AVERTISSEMENT: Les objectifs du pointeur dans la mission diffèrent dans la signature FAIT: *** [got_packet.o] erreur 1


3 Réponses :


2
votes

Vous devez définir la structure en dehors des principaux () et lancer args dans got_packet () comme: xxx


0 commentaires

5
votes

Je réécris votre code, il est maintenant compilé sans erreur: xxx


0 commentaires

1
votes

compiler le code ci-dessus.

Installation libpcap -> sudo apt-get install libpcap0.8-dev

ALORS -> GCC GOT_PACKET.C -LPCAP -O GOT_PACKET.O


0 commentaires