cookie を使用できるもう 1 つの場所はコールバックです。サーバーが (ユーザーが定義した) コールバックを指定してコンテキストが最初に使用されたときを知るには、rpc_gss_set_callback() 関数を使用します。コールバックが呼び出されるのは、コンテキストがデータ交換用に初めて使用されて、そのコンテキストが指定したプログラムとバージョン用に確立された後です。
次に、ユーザー定義のコールバックルーチンの形式を示します。
2 番目と 3 番目の引数 deleg と gss_context は GSS-API データ型であり、現在公開されていません。したがって、コールバック関数はこれらの引数を無視できます。簡単に言えば、プログラムが GSS-API 操作をコンテキストに実行したい (つまり、受け入れ基準をテストしたい) 場合は、deleg は委託されるピアの識別情報であり、gss_context は GSS-API コンテキストへのポインタとなります。cookie 引数については、上記を参照してください。
lock 引数は、rpc_gss_lock_t 構造体へのポインタです。
typedef struct { bool_t locked; rpc_gss_rawcred_t *raw_cred; } rpc_gss_lock_t;このパラメータを使用すると、サーバーは特定の QOP とサービスをセッションで実施できます。QOP とサービスは rpc_gss_rawcred_t 構造体 (例 8-5 を参照) にあります (サーバーでサービスと QOP の値を変更しないでください)。ユーザー定義のコールバックが呼び出されると、locked フィールドは FALSE に設定されます。サーバーが locked を TRUE に設定した場合、rpc_gss_rawcred_t 構造体にある値と一致する QOP とサービスの値を持つ要求だけが受け入れられます。
詳細は、rpc_gss_set_callback(3N) のマニュアルページを参照してください。