EN JA
KRB5_KRBHST_INIT(3)
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_addrinfoKerberos 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