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

Signaler
Messages postés
3
Date d'inscription
lundi 24 mars 2003
Statut
Membre
Dernière intervention
6 avril 2006
-
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
-
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

Messages postés
3
Date d'inscription
lundi 24 mars 2003
Statut
Membre
Dernière intervention
6 avril 2006

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 !!!
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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.