Linux Reseaux : variables "s ecrasant" en bossant sur les Headers IP

cs_cast Messages postés 3 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 6 avril 2006 - 8 mai 2005 à 18:23
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 8 mai 2005 à 18:54
Salut tout le monde.

Je travaille sur un projet genre sniffer avec libpcap.

Quand je veut afficher les addresses IP sniffer y as pas de probleme,
mais quand je les enregistre et que je les reaffiche par la suite ca
chie, l IP source as ecraser l IP destination, et je me retrouve avec 2
fois l IP source.

j ai jamais rencontrer ce genre de probleme mais la ca fait longtemps
que je suis bloquer et j ais toujours pas de solution donc j en appelle
a l aide



ici le code

void print_ip_header(struct ip_header *paquetip)



...



printf ("\n\n IP source adress----->"); //32 bit

printf(inet_ntoa (paquetip->ip_src)); // OK

IPsrc= inet_ntoa (paquetip->ip_src);



printf ("\n IP destination adress----->");

printf(inet_ntoa(paquetip->ip_dest)); // OK

IPdst = inet_ntoa (paquetip->ip_dest);









printf ("\n\n");



printf ("\n Re IP destination"); // IP source ?!?!??!?!??!?!? PB

printf(IPdst);



printf ("\n Re IP source"); //IP source normale la

printf(IPsrc);



....

}

la fonction qui gere ca et une fonction void, je precise parceque j ai
des problemes avec les fonctions surtout avec la recuperation de
donnee,

2 réponses

cs_cast Messages postés 3 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 6 avril 2006
8 mai 2005 à 18:38
j ai remarquer aussi qui si j intervertit le code relatif aux adresses
IP, j inverse le probleme. Ce n est plus l ip destination qui est
ecraser mais l IP source.



Donc il doit y avoir un probleme qui fait que l ecriture de mes variables n est pas protegee..



mais je ne voit vraiment pas !!!
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
8 mai 2005 à 18:54
Salut,
Affiche les adresses retournées par inet_ntoa et tu verra que les adresses sont identiques.
inet_ntoa retourne un buffer déclaré en static dans la fonction. Il ne faut donc pas sauver l'adresse retournée par inet_ntoa mais le contenu du buffer.
0
Rejoignez-nous