手続きがブロードキャスト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 ) は静的変数を指していなければなりません。