6) Come funziona in dettaglio la callrpc?
Primitiva callrpc:
int callrpc(remotehost,n_prog,n_vers,n_proc,xdr_arg,arg,xdr_res,res)
char *remotehost; /*nome nodo remoto*/
u_long n_prog,n_vers,n_proc; /*identificazione procedura*/
xdrproc_t xdr_arg; /*routine xdr di conversione invocata*/
/*per trasformare i dati in uscita*/
char *arg; /*argomento (passaggio per valore)*/
xdrproc_t xdr_res; /*routine xdr di conversione invocata*/
/*per trasformare risultato in ingresso*/
char *res; /*risultato*/
Problemi nel passaggio di strutture a lista: Il ricevente deve ricostruire la struttura dinamica (con funzioni opportune qui specificate in xdr).
La callrpc restituisce successo (=0) o la causa di insuccesso (un intero appartenente all'insieme di valori della struttura enum clnt_stat definita nel file <rpc/clnt.h>)