scha_err_tscha_get_fullname(const char *zonename, char **fullname)
scha_get_fullname() 関数は、ローカルノード上のゾーンコンテキストの論理ノード名を返します。出力パラメータの fullname は、クラスタノード名を含む文字列に設定されます。この文字列は、呼び出し元が解放する必要があります。
zonename が NULL である場合、ゾーンコンテキストは、この呼び出しが実行されている場所に依存します。
大域ゾーンで実行されている場合は、ローカルノード名を返します。
ゾーンクラスタで実行されている場合は、グローバルクラスタノード名ではなく、ゾーンクラスタノード名を返します。
zonename が null 以外である場合、これは zonename で指定された非大域ゾーンで構成されているリソースの代わりに、大域ゾーンで呼び出されることが想定されています。zonename がゾーンクラスタの名前 (これは、基本となる非大域ゾーンの名前でもあります) である場合は、ゾーンクラスタノード名を返します。
この関数がリソースコールバックメソッドから呼び出され、zonename パラメータが scds_get_zone_name() 関数の出力に設定されている場合は、いずれの場合も、結果として得られる fullname はリソースグループのノードリスト内の現在のエントリに一致します。
グローバルクラスタまたはゾーンクラスタ
global_zone リソースタイプまたは通常のリソースタイプ
この関数は、次の値を返します。
関数の実行に成功。
関数の実行に失敗。
関数の実行に成功。
その他のエラーコードについては、scha_calls(3HA) を参照してください。
次の例では、scha_get_fullname() を使用して、現在のプログラムが実行されている nodename コンテキストを表す fullname 文字列を取得し、この名前をリソースグループのノードリスト内で検索します。
#include <scha.h> #include <libdsdev.h> main(int argc, char *argv[]) { scha_err_t err; scds_handle_t handle; char *myzonename; char *fullname; const scha_str_array_t *rgnodelist; uint_t ix; if (scds_initialize(&handle) != SCHA_ERR_NOERR) { /* handle the error */ ... } myzonename = scds_get_zone_name(handle); rgnodelist = scds_get_rg_nodelist(handle); err = scha_get_fullname(myzonename, &fullname); ... for (ix = 0; ix < rgnodelist->array_cnt; ix++) { if (strcmp(fullname, rgnodelist->str_array[ix]) == 0) { /* found this node in the node list */ ... } } ... }
次の属性については、attributes(5) を参照してください。
|
scds_calls(3HA), scds_initialize(3HA), scha_cluster_getnodename(3HA), attributes(5)