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)