donc la je n'ai pas tout compris sur le endianess!!
en tout cas mes socket RAW ne parte pas ou du moins si mais mal formée!
Voila comment je déclare ma socket :
socketRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
Voila le code pour l'envoyer :
1 2 3 4 5 6 7 8 9 10 11 12
| sock_send.sin_family = AF_INET;
sock_send.sin_addr.s_addr = inet_addr("192.168.0.1");
//datSize est une valeur entirère stockant la taille total de mon paquet (entête IP + ICMP)
int dataSize = sizeof(struct ICMP_HEADER) + sizeof(struct IP_HEADER);
ICMP_PAQUET *pPaquet; // Déclare un pointeur sur la stucture IP_HEADER. */
pPaquet = &paquet; // Initialisation du pointeur
sendto(socketRaw, (char *)pPaquet, dataSize, 0, (struct sockaddr *)&IP_sock_info, sizeof(IP_sock_info)); |
je me demande si je dois configurer la socket avec car comme je forme mes paquets, ils ne sont pas pris en compte j'ai lu sur de site qu'il fallait faire un truc du genre :
1 2 3
|
char sockOpt = 1;
setsockopt(socketRaw, IPPROTO_IP, IP_HDRINCL, (char*)&sockOpt, sizeof(sockOpt)); |
mais moi quand je compile mon prog avec ces lignes j'ai l'erreur sur IP_HDRINCL qui me dit identificateur non déclaré. quand je passe la sourie dessus, il me met #define IP_HDRINCL 2!!
si quelqu'un a une idée ...
Partager