ONC+ 開発ガイド

コールバック

これ以外に cookie が使用される場所は、コールバックです。サーバーは、rpc_gss_set_callback() 関数を使用することにより、(ユーザー定義の) コールバックを指定してコンテキストが最初に使用された時を認知できます。コールバックは、コンテキストが指定されたプログラムとバージョン用に確立されたあとに、そのコンテキストがデータ交換に最初に使用された時に呼び出されます。

ユーザー定義のコールバックルーチンは、以下のような形式になります。

2 番めと 3 番めの引数 deleggss_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 とサービスを実行できます。例 4-33 に記載したように、QOP とサービスは、rpc_gss_rawcred_t 構造内で検出できます。 (サーバーは、サービスと QOP の値を変更する必要はありません。) ユーザー定義のコールバックが呼び出されると、locked フィールドは FALSE に設定されます。サーバーが、lockedTRUE に設定すると、QOP とサービスの値が、rpc_gss_rawcred_t 構造内の値と一致する要求だけが受理されます。

詳細は、 rpc_gss_set_callback(3NSL) のマニュアルページを参照してください。