Bonjour,
J'utilise la librairie ipsec-tools-0.5.2 sous FreeBSD 6.0. J'utilise le code de ipsec-tools pour envoyer des données au noyau par la fonction pfkey_send(). Cette fonction fait appel à la fonction send(int so, msg, int len). so : descripteur de la socket, msg : données à envoyer au noyau, len : taille des données (taille de msg). Il y a quelque chose que je ne comprends pas.
Tout se passe bien lorsque j'utilise le code en l'état. J'ai voulu rajouter des données dans msg (en augmentant la valeur de len en conséquence) et send retourne -1 (send ne retourne aucune erreur du type EMSGSIZE ou ECONNECT ou autre). D'après le man de send -1 est une erreur interne et implicite de send. J'ai essayé alors deux choses : envoyer msg sans le modifier mais en diminuant len de 1 puis envoyer msg en lui ajoutant un octet et en augmentant len de 1. Même erreur -1 de send et les données ne sont pas transmises au noyau. J'ai vérifié par un affichage : len correspond au nombre d'octets de msg (et pas au nombre de bits ou de blocs de 32 ou 64 par exemple).
Quelqu'un aurait-il une idée sur la raison de cette erreur ? Y a-t-il une taille max de données pouvant être envoyées ? Mais alors pourquoi je ne parviens pas non plus à envoyer len-1 octets de msg ?
Y a-t-il un contrôle quelconque sur le message ? Un champ control à modifier ? Est-ce que send reçoit un acquittement du noyau et que c'est pour cela qu'il y a l'erreur ?
Qu'en pensez-vous ?
Publié par giuseppe le 11/03/06 @ 08:23 | commenter | lien permanent