OVH Cloud OVH Cloud

[WINSOCK2/RAW_SOCKET] fonction in_cksum?

4 réponses
Avatar
nesk01
bjr,
j'aimerais coder un prog pour envoyer mes paquets sur le reseau en
specifiant les entetes, le probleme est que je ne parviens pas a calculé le
checksum (pour l'enete IP et TCP) ? j'ai vu qu'il fallait utiliser la
fonction in_cksum() mais apparament elle n'est pas dans mes bibliotheques
puisque je n'arrive pas a faire l'edition des liens lorsque je l'utilise
dans mon code (j'utilise winsock2)...
est ce ke kelkun sait ou est cette fonction in_cksum() ?

merci
nesk01

4 réponses

Avatar
Cyrille Szymanski
On 2004-05-21, nesk01 wrote:
bjr,
j'aimerais coder un prog pour envoyer mes paquets sur le reseau en
specifiant les entetes, le probleme est que je ne parviens pas a calculé le
checksum (pour l'enete IP et TCP) ?



Il y a une bonne myriade d'exemples et de bibliothèques toutes faites
pour ça en C et/ou C++ sur la toile, tu n'as pas beaucoup cherhcé.

--
cns
Avatar
nesk01
y'a pa de prob g capté les exemples mais tous utilisent la fonction
in_cksum() pour calculer le checksum or je ne possede pas cette fonction (du
moins le compilateur de VisualC++ me signale une erreur lors de l'edition
des liens)
je veu juste savoir où est situee cette fonction.....?
Avatar
Cyrille Szymanski
On 2004-05-24, nesk01 wrote:
y'a pa de prob g capté les exemples mais tous utilisent la fonction
in_cksum() pour calculer le checksum or je ne possede pas cette
fonction (du moins le compilateur de VisualC++ me signale une erreur
lors de l'edition des liens) je veu juste savoir où est situee cette
fonction.....?



Prenez des exemples de code pour Win32, in_cksum() est une fonction du
monde UNIX (typiquement dans netinet).

Vous pouvez toujours vous inspirer de son implémentation (par exemple
pour FreeBSD) :

http://fxr.watson.org/fxr/source/netinet/in_cksum.c

--
cns
Avatar
Cyrille Szymanski
On 2004-05-31, Cyrille Szymanski wrote:

http://fxr.watson.org/fxr/source/netinet/in_cksum.c



La version non spécifique à une architecture est beaucoup plus claire
(il n'y a pas d'optimisation de faite) :

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libstand/in_cksum.c?rev=1.1.1.1.6.1&content-type=text/x-cvsweb-markup

Tu peux jeter un coup d'oeil à la version optimisée pour i386 mais
elle est bien barbare :

http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/i386/i386/in_cksum.c?rev=1.27&content-type=text/x-cvsweb-markup

--
cns