User Tools

Site Tools


sysrep:rpc

This is an old revision of the document!


TP RPC

Vous disposez de documentation dans le répertoire doc/ ainsi que du man.

Exercice 1 (calculation)

On vous fourni l'interface “calculation.x”.

calculation.x
struct two_int {
    int a;
    int b;
};
program CALCULATION_PROG {
    version CALCULATION_VERS_BASE {
	int sum(two_int)=1;
    }=1;
}=0x20000000;
  1. Programmer cet exemple. Pour générer tout le code source (client, serveur, makefile, stubs), vous pouvez utilisez la commande suivante : “rpcgen -a calculation.x”. Il vous reste à compléter les fichiers calculation_server.c“ et “calculation_client.c”…
  2. Compiler : make -f makefile.calculation.
  3. Tester en local sur votre machine, puis sur deux machines distantes.
  4. Analyser le résultat de la commande “rpcinfo -p”.
  5. Analyser les souches de ce petit exemple. Ajouter des traces dans le code des souches afin de suivre précisément les appels à distance…
  6. Ajouter maintenant de nouvelles fonctions à votre service “calculation”…

Exercice 2 (rwall)

A partir de l'interface “rwall.x” qui permet d'envoyer un message.

  1. Implanter rapidement ce service.
  2. Ecrire maintenant un client pour le service “rwall”, n'utilisant

pas les souches générées, grâce à la fonction “callrpc()”.

  1. Ecrire maintenant un serveur pour le service “rwall”

n'utilisant pas les souches générées, grâce aux fonctions

  "registerrpc()" et "svc_run()".

Nota Bene : cf. man rpc

Exercice 3 (authentification)

On vous fourni l'interface “hello.x”, qui retourne le message “hello world!” au client.

  • Implantez rapidement ce service.
  • Modifiez le client pour qu'il utilise l'authentification Unix.

Aidez-vous de la documentation fournie dans doc/rpc-doc.pdf.

  • Modifiez le serveur pour qu'il accepte uniquement les clients

utilisant l'authentification Unix, possédant le même UID que le

  serveur. Vérifiez qu'un client avec un UID différent est bien
  rejeté !
  • Que pensez-vous de ce système d'authentification ? Mettez-en

évidence que vous pouvez le contourner en modifiant le code

  client.
sysrep/rpc.1354025312.txt.gz · Last modified: 2024/03/18 15:05 (external edit)