3 Indications
Votre programme utilisera la bibliothèque des sockets, en particulier
la famille de sockets PF_INET et le mode non connecté SOCK_DGRAM.
Il vous est rappelé qu'un serveur DHCP/BOOTP écoute sur un port n et qu'un
client DHCP/BOOTP écoute sur le port n+1. En temps normal n vaut 67, mais
pour que votre client non privilégié puisse obtenir une réponse n est fixé
à 6767.
Cherchez sur Internet la structure d'un datagramme BOOTP. Pour remplir
les champs, utilisez l'adresse MAC passée en paramètre à votre utilitaire
et le PID du programme comme identifiant de la transaction. Ne considérez
que les réponses UDP comportant le bon identifiant.
A quelle adresse IP la réponse BOOTP sera-t-elle envoyée ? Etudiez la
signification des champs du paquet BOOTP pour trouver une parade à ce
problème.
Que constatez-vous lorsque vous tentez d'envoyer le paquet BOOTP en diffusion
IP (adresse 255.255.255.255) ? Pour contourner la difficulté, prévoyez
un paramètre optionnel supplémentaire à l'utilitaire bootclient
permettant d'envoyer la requête à un serveur particulier. Faites les tests
avec la machine oleron.