EN JA
UNISTRUCT(3)
UNISTRUCT(3) FreeBSD Library Functions Manual UNISTRUCT(3)

名称

libngatmATM シグナルライブラリ

ライブラリ

Begemot ATM シグナルライブラリ (libngatm, -lngatm)

書式

#include < netnatm/msg/unistruct.h>
#include < netnatm/msg/unimsglib.h>

解説

libngatm ライブラリは、UNI 4.0 メッセージを操作します。それぞれの情報要素とメッセージタイプのために、ヘッダファイルは構造体の定義を含んでいます。さらに、多くの支援構造体といくつかのライブラリ関数のためのグローバルなコンテキスト構造体があります。この文書は一般的な構造体についてだけ説明します。情報要素とメッセージ構造体に関しては、ヘッダファイルを参照してください。

ライブラリ設定

ライブラリがコンパイルされるとき、多くの定数はファイル uni_config.h に定義されます。それらはある制限を定義します。これらの定義の使用のために、それらのなんらかの変化はすべてのライブラリコードとライブラリを使用するすべてのコードを完全に再コンパイルすることを必要とします。次の定数が定義されています (名前の後ろにある値はデフォルト値です):
UNI_MAX_ERRIE ( 50)
情報要素をデコードして、それらを解析するとき、ライブラリはエラーがある IE の識別子でコンテキストの配列に書き込みます。これはこの配列のサイズです。
UNI_NUM_IE_GIT ( 3)
メッセージは、1 つ以上の General Identifier Transport (一般的な識別子転送) 情報要素を含むことができます。これはこれらの IE の最大のサポートされた数です。
UNI_NUM_IE_BLLI ( 3)
SETUP メッセージの BLLI 情報要素の最大数。
UNI_NUM_IE_CALLEDSUB ( 2)
SETUP メッセージの Called Subaddress (呼び出されたサブアドレス) 情報要素の最大数。
UNI_NUM_IE_CALLINGSUB ( 2)
SETUP メッセージの Calling Subaddress (呼び出しサブアドレス) 情報要素の最大数。
UNI_NUM_IE_TNS ( 4)
SETUP メッセージの Transit Network Selection (トランジットネットワーク選択) 情報要素の最大数。
UNI_TNS_MAXLEN ( 4)
TNS IE の名前の最大サイズ。
UNI_UU_MAXLEN ( 128)
UU IE のユーザデータの最大サイズ。
UNI_ADDR_MAXLEN ( 20)
最大のアドレスサイズ。
UNI_SUBADDR_MAXLEN ( 20)
最大のサブアドレスサイズ。
UNI_NUM_IE_DTL ( 10)
SETUP メッセージの DTL 情報要素の最大数。
UNI_DTL_MAXNUM ( 20)
1 つの DTL 情報要素の識別子の最大数。

情報要素

各情報要素構造体は次のタイプフィールドで始まります:

struct uni_iehdr { 
 enum uni_coding coding; /* コーディング規格 */ 
 enum uni_ieact act; /* 動作指示子 */ 
 u_int  pass:1; /* PNNI 転送要求 */ 
 u_int  present;/* オプションの要素が存在か */ 
};

coding フィールドは、情報要素のコーディング規格であり、 UNI_CODING_ITU または UNI_CODING_NET の 1 つです。動作指示子 act はエラー処理に使用され、次のうちの 1 つです:

UNI_IEACT_CLEAR
呼び出しクリア
UNI_IEACT_IGNORE
IE を無視して、続行する
UNI_IEACT_REPORT
IE を無視して、報告して、続行する
UNI_IEACT_MSG_IGNORE
メッセージを無視する
UNI_IEACT_MSG_REPORT
メッセージを無視して、報告します。
UNI_IEACT_DEFAULT
使用動作指示子フラグは設定されません。

PNNI メッセージの情報要素のために、 pass フィールドは、IE ヘッダからの転送するフラグを含んでいます。

present フィールドは、情報要素の現在の状態について説明する 4 つの共通のビットを含む、ビットフィールドです。ビットの残りは、IE のオプションのフィールドのどれが存在しているかを示す、情報要素によって使用されます。 IE ヘッダファイルの大部分はそれらのビットのための定義を含んでいます。共通のビットは次の通りです:

#define UNI_IE_EMPTY 0x80000000 
#define UNI_IE_PRESENT 0x40000000 
#define UNI_IE_ERROR 0x20000000 
#define UNI_IE_XXX 0x10000000

フラグ UNI_IE_EMPTY は、情報要素が存在していることを示しますが、空です (長さは、0 です)。これはすべての情報要素で正当です。フラグ UNI_IE_PRESENT は、メッセージに IE が存在しているのを示し、フラグ UNI_IE_ERROR は、IE にはエラーがあったことを示します。フラグ UNI_IE_XXX は現在使用されていません。

次のマクロはこれらのフラグをテストするか、または変更するために使用されます:

IE_ISPRESENT
IE が存在し空でないかどうかチェックします。この場合 ture (真) を返します。
IE_SETPRESENT
IE が存在して、空でないように設定します。
IE_ISEMPTY
IE が存在し空であるかどうかチェックします。この場合 ture (真) を返します。
IE_SETEMPTY
IE が存在して、空であるように設定します。
IE_ISERROR
IE が存在して、エラーがあるかどうかチェックします。この場合 ture (真) を返します。
IE_SETERROR
IE に存在して、エラーがあるように設定します。
IE_ISGOOD
IE が存在して、空でなく、エラーがないかどうかチェックします。この場合 ture (真) を返します。

それぞれの IE タイプのために、 uni_hdr.h 中に形式 UNI_IE_*enum uni_ietype 定義があります。

unistruct.h はすべての IE 構造体の共用体である union uni_ieall と次の構造体を含んでいます。

struct uni_ie { 
 enum uni_ietype  ietype; 
 union uni_ieall  u; 
};

メッセージ

それぞれのメッセージ構造体は次の構造体から始まります。

struct uni_msghdr { 
 struct uni_cref cref; 
 enum uni_msgact act; /* 動作指示子 */ 
 u_int  pass:1; /* PNNI 転送要求 */ 
};

cref は呼び出し参照です:

struct uni_cref { 
 u_int flag; 
 u_int cref; 
};

2 つの特別な呼び出し参照があります: CREF_GLOBALCREF_DUMMY です。 act フィールドは、メッセージ動作指示子であり、次の値の 1 つがあります:

UNI_MSGACT_CLEAR
呼び出しクリア
UNI_MSGACT_IGNORE
メッセージを無視する
UNI_MSGACT_REPORT
STATUS メッセージを送信します
UNI_MSGACT_DEFAULT
このメッセージタイプのためのデフォルトの操作

pass フィールドは、PNNI メッセージの場合での指示子に従ったパスです。

れぞれのメッセージタイプのために、 uni_hdr.h 中の UNI_*enum uni_msgtype 定義があります。 uni_struct.h はすべてのメッセージ構造体の共用体である union_msgall と次の構造体を含んでいます。

struct uni_all { 
 enum uni_msgtype mtype; 
 union uni_msgall u; 
};

コンテキスト

ヘッダファイル unimsglib.h はある関数に渡された引数の数を最小にするためと、グローバル変数の使用を避けるのに使用される struct uni_context の定義を含んでいます。この構造体には、次の public フィールドがあります (他のすべてのフィールドはライブラリによって内部的に使用されます):
err
これは次の構造体から成る配列です:

struct uni_ierr { 
 enum uni_ierr_type err; /* エラー種別 */ 
 enum uni_ieact act; /* 動作指示子 */ 
 u_int  ie:8; /* ie タイプ */ 
 u_int  man:1; /* 強制フラグ */ 
 u_int  epref:1;/* Q.2971 9.5.3.2.1 low-pri epref */ 
};

情報要素をデコードするとき、エラーがある IE に関する情報はこの配列に詰め込まれます。

errcnt
err 中の IE の現在の番号。
q2932
Q.2932.1 Generic Functional Protocol (一般的機能プロトコル) を有効にします。現在、メッセージと IE デコード/エンコードだけがサポートされています。シブナル部分はまだ不足しています。
pnni
PNNI 拡張を有効にします。現在、メッセージと IE デコード/エンコードだけがサポートされています。シブナル部分はまだ不足しています。
git_hard
GIT 情報要素で強力なチェックを行います。
bearer_hard
Broadband Bearer IE で強力なチェックを行います。これは、古い無記名のタイプ値を拒絶するのを伴います。
cause_hard
Cause 情報要素で強力なチェックを行います。
multiline
これは印刷ルーチンで使用されます。正当な値は、0 から 4 であり、異なった種類のプリントアウトとなります。
tabsiz
印刷で使用するタブのサイズ。 4 は良い値です。

関連項目

libunimsg(3)

規格

この実装は、いくつかの制限を除いて、適切な ITU-T 推薦と ATM Forum 規格に適合しています (「設定」セクションを参照)。

作者

Hartmut Brandt <harti@FreeBSD.org>
May 23, 2005 FreeBSD