IPX(3)

名称
ipx_addr, ipx_ntoa - IPX アドレス変換ルーチン

書式
#include <sys/types.h> #include <netipx/ipx.h> struct ipx_addr ipx_addr(const char *cp) char * ipx_ntoa(struct ipx_addr ipx)

解説
ipx_addr() ルーチンは IPX アドレスを表わすキャラクタ・ストリングを解釈し、 システム呼出しに適したバイナリ情報を返します。 ipx_ntoa() ルーチンは IPX アドレスを受け取り、共通に使われる表記法で アドレスを示した ASCII ストリングを返します。

< ネットワーク番号 >.< ホスト番号 >.< ポート番号 >

後に付くゼロ・フィールドは圧縮されて各番号は、 ipx_addr() への入力に適したフォーマットの16 進で印刷されます。 スーパー 10 進ディジットのないフィールドは、後ろに ‘H’ が付随します。

ipx_addr() と共通使用の大多数のフォーマットとの互換性を保証するべく 努力がなされています。最初に、アドレスは、ピリオッド ‘’., コロン ‘’:, パウンド記号 ‘#’ の中から選んだ一つのセパレータ（区切り文字）で 1 フィールド から 3 フィールドに分割されます。次に、各フィールドでのバイト・セパレー タ ( コロンまたはピリオッド ) の有無を調べます。バイト・セパレータがあれば、 分割されたサブフィールドは小さな 16 進数となり、全体は ネットワーク・バイト順序の量として、 ネットワーク順序の上位バイトにゼロがあるものとして 取り込まれます。次に、フィールドでのハイフンの有無を調べますが、ハイフン があれば、フィールドは 1000 年をハイフンで区切る 10 進表記法の数字と 想定されます。次に、数字と見なされるフィールドに前詰めの ‘0x’ ( C の場合 )、 後詰めの ‘H’ ( Mesa のとき )、あるいは任意の上位 10 進ディジットがあれば、 その数字は 16 進数と解釈されます。前詰めの ‘0x’ があり、上位 8 進ディジットがなければ、その数字は 8 進数と解釈されます。 それ以外は、 10 進数に変換されます。

戻り値
なし ( バグ 参照 )

関連項目
hosts(5), networks(5)

歴史
前述の ns_addr() と ns_toa() 関数は 4.3BSD で取り入れられました。

バグ
ipx_ntoa() が戻すストリングはスタティック・メモリ領域に常駐します。 ipx_addr() 関数は入力形式が適切かどうか診断すべきです。そして、明確にこれを 容認すべきです。