手続きがブロードキャストRPC を通して呼び出され、有効な応答を返せないときは、サーバーはクライアントに応答しないでください。その方がネットワークが混雑しません。 サーバーが応答を返さないようにするには、リモートプロシージャの戻り値を NULL にします。rpcgen が生成したサーバープログラムは、NULL を受け取った場合は応答しません。
NFS サーバーの場合だけ応答する手続きを示します。
void *
reply_if_nfsserver()
{
char notnull; /*
*この場所のみで、そのアドレスが使用可能
*/
if( access( "/etc/dfs/sharetab",
F_OK ) < 0 ) {
/* RPC の応答を禁止 */
return( (void *) NULL );
}
/*
* NULL 以外の値 notnull を指定したので、RPC は応答する
*/
return( (void *) ¬null );
}
|
RPC ライブラリルーチンが応答するには、手続きが NULL 以外のポインタ値を返す必要があります 。
この例では、手続き reply_if_nfsserver() が NULL 以外の値を返すように定義されているならば、戻り値 (¬null ) は静的変数を指していなければなりません。