すべての GSS-API 関数は 2 種類のコードを戻して、関数が成功したか失敗したかについての情報を提供します。どちらの種類の状態コードも OM_uint32 値として戻されます。次に、この 2 種類の戻りコードについて説明します。
メジャー状態コード。メジャー状態コードは、
a) 汎用 GSS-API ルーチンエラー (ルーチンに無効な機構を指定したなど)
b) 特定の GSS-API 言語バインディングに固有な呼び出しエラー (つまり、関数の引数が読めない、書き込めない、または形式が間違っているなど)
c) a) と b) の両方
のいずれかを示します。さらに、メジャー状態コードはルーチンの状態について補助的な情報も提供できます。たとえば、操作が終了していない、トークンが送信された順番が間違っているなどです。なにもエラーが発生しなかった場合、ルーチンは値が GSS_S_COMPLETE のメジャー状態コードを戻します。
メジャー状態コードは次のように戻されます。
OM_uint32 major_status ; /* GSS-API が返す状態 */ major_status = gss_generic_function(arg1, arg2 ...); |
メジャー状態戻りコードは他の OM_uint32 と同じように処理できます。次に例を示します。
OM_uint32 maj_stat; maj_sta = gss_generic_function(arg1, arg2 ...); if (maj_stat == GSS_CREDENTIALS_EXPIRED) <何らかの処理を行う...> |
マイナー状態コード。マイナー状態コードは実際の機構が戻すものです。したがって、このマニュアルでは特に説明しません。
すべての GSS-API 関数は最初の引数として OM_uint32 のマイナーコード状態を受け取ります。関数が呼び出された関数に戻るとき、マイナー状態コードは次のように格納されます。
OM_uint32 *minor_status ; /* mech が返す状態 */ major_status = gss_generic_function(&minor_status, arg1, arg2 ...); |
GSS-API が致命的なメジャーコードエラーを戻す場合でも、minor_status パラメータは常に GSS-API ルーチンによって設定されますが、他のほとんどの出力パラメータは設定されません。しかし、GSS-API ルーチンによって割り当てられた記憶領域へのポインタが戻されると期待される出力パラメータは NULL に設定されます。つまり、記憶領域は実際には割り当てられていないと示されます。このようなポインタに関連する長さフィールド (gss_buffer_desc 構造体を参照) は 0 に設定されます。このような場合は、アプリケーションはこれらのバッファを解放する必要はありません。