KRB5_KRBHST_INIT(3) | FreeBSD Library Functions Manual | KRB5_KRBHST_INIT(3) |
名称
krb5_krbhst_init, krb5_krbhst_init_flags, krb5_krbhst_next, krb5_krbhst_next_as_string, krb5_krbhst_reset, krb5_krbhst_free, krb5_krbhst_format_string, krb5_krbhst_get_addrinfo — Kerberos KDC ホストを検索するライブラリ
Kerberos 5 ライブラリ (libkrb5, -lkrb5)書式
#include < krb5.h> krb5_error_code
krb5_krbhst_init( krb5_context context, const char *realm, unsigned int type, krb5_krbhst_handle *handle);
krb5_error_code
krb5_krbhst_init_flags( krb5_context context, const char *realm, unsigned int type, int flags, krb5_krbhst_handle *handle);
krb5_error_code
krb5_krbhst_next( krb5_context context, krb5_krbhst_handle handle, krb5_krbhst_info **host);
krb5_error_code
krb5_krbhst_next_as_string( krb5_context context, krb5_krbhst_handle handle, char *hostname, size_t hostlen);
void
krb5_krbhst_reset( krb5_context context, krb5_krbhst_handle handle);
void
krb5_krbhst_free( krb5_context context, krb5_krbhst_handle handle);
krb5_error_code
krb5_krbhst_format_string( krb5_context context, const krb5_krbhst_info *host, char *hostname, size_t hostlen);
krb5_error_code
krb5_krbhst_get_addrinfo( krb5_context context, krb5_krbhst_info *host, struct addrinfo **ai);
解説
これらの関数は特定のレルム (アドレス体系) とサービスのすべての Kerberos ホストを通して順序付けるために使用されます。サービスタイプは KDC、管理サーバ、パスワード変更サーバ、または Kerberos 4 チケット変換のサーバを指定できます。最初に、特定のサービスへのハンドルは興味がある realm (アドレス体系) と検索サービスのタイプで krb5_krbhst_init() (または krb5_krbhst_init_flags()) 呼び出しによって取得されます。 type は、次の 1 つを指定できます:
- KRB5_KRBHST_KDC
- KRB5_KRBHST_ADMIN
- KRB5_KRBHST_CHANGEPW
- KRB5_KRBHST_KRB524
handle は呼び出し側に返され、他の関数に渡されるべきです。
krb5_krbhst_init_flags への flag 引数は、 krb5_send_to_kdc_flags() で使用するものと同じフラグです。指定できる値は、次の通りです:
- KRB5_KRBHST_FLAGS_MASTER
- マスタ (読み込み書き込み) KDC のみと通信します
- KRB5_KRBHST_FLAGS_LARGE_MSG
- これは、大きなメッセージであるので、それを扱うことができる転送を使用します。
krb5_krbhst_next() への呼び出し毎に新しいホストの情報が返されます。前の関数は、プロトコル、ホスト名、とポートのような、ホストに関する情報を含んでいる構造体へのポインタを host に返します。
typedef struct krb5_krbhst_info { enum { KRB5_KRBHST_UDP, KRB5_KRBHST_TCP, KRB5_KRBHST_HTTP } proto; unsigned short port; struct addrinfo *ai; struct krb5_krbhst_info *next; char hostname[1]; } krb5_krbhst_info;
関連する関数、 krb5_krbhst_next_as_string() は URL のような文字列と同じ情報を返します。
それ以上のホストがないとき、これらの関数は KRB5_KDC_UNREACH を返します。
すべてのホスト上で再び繰り返すためには、 krb5_krbhst_reset() を呼び出し、次に krb5_krbhst_next() を呼び出せば、最初のホストを返します。
ハンドルが終るとき、 krb5_krbhst_free() が呼び出されるべきです。
krb5_krbhst_info を使用するために、2 つの関数があります: その構造体の印刷可能な表現を返す krb5_krbhst_format_string() と言及されたサーバと通信するために使用することができる struct addrinfo を返す krb5_krbhst_get_addrinfo() です。
使用例
次のコードはレルム“MY.REALM”の KDC を印刷 (表示) します:
krb5_krbhst_handle handle; char host[MAXHOSTNAMELEN]; krb5_krbhst_init(context, "MY.REALM", KRB5_KRBHST_KDC, &handle); while(krb5_krbhst_next_as_string(context, handle, host, sizeof(host)) == 0) printf("%s\n", host); krb5_krbhst_free(context, handle);
歴史
これらの関数は Heimdal 0.3g ではじめて登場しました。May 10, 2005 | HEIMDAL |