スポンサーリンク

IPX(3) FreeBSD ライブラリ関数マニュアル IPX(3)

名称

ipx_addr, ipx_ntoa − IPX アドレス変換ルーチン

ライブラリ

IPX Address Conversion Support Library (libipx, −lipx)

書式

#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 文字列として返します:

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

後につく 0 となるフィールドは抑制され、各番号は ipx_addr() の入力に適した 16 進数の形式で印字されます。 10 進数を越える数字が現れないフィールドは最 後に ‘H’ が付加されます。

ipx_addr() と一般に使用される大部分の形式との互換性の確保に努力が注がれて きました。最初に、アドレスはピリオド ‘.’ 、コロン ‘:’ 、ポンド記号 ‘#’ の 中から選んだ単一のセパレータで 1 フィールドから 3 フィールドに分割されま す。次に、各フィールドについてバイトセパレータ ( コロンまたはピリオド ) の有無を調べます。バイトセパレータがある場合は、分離されたバイトフィール ドは 16 進数のニブルとして解釈されます。全体はネットワーク順でのバイト上 位に 0 を拡張したバイト列がネットワークのバイト順で解釈されます。次に、 フィールドでのハイフンの有無を調べます。ハイフンがある場合はフィールドは ハイフンで 1000 の位を区切る 10 進数表記の数であると見なされます。次に、 フィールドは以下のようなやり方で数として解釈されます。すなわち、 (C のよ うに ) 先行する ‘0x’ や、 (Mesa のように ) 後続の ‘H’ がある場合、または 10 進数を越える数字がある場合には、フィールドは 16 進数であると解釈されま す。先行する ‘0’ があり、かつ 8 進数を越える数字が無い場合には、フィール ドは 8 進数であると解釈されます。いずれにも該当しない場合には、 10 進数と して変換されます。

戻り値

なし ( バグを参照 ) 。

関連項目

hosts(5), networks(5)

歴史

前身である ns_addr() 関数と ns_toa() 関数は 4.3BSD で登場しました。

バグ

ipx_ntoa() 関数が返す文字列は static メモリ領域に存在します。 ipx_addr() 関数は入力の不適切な形式を診断すべきです。更に、このバグ診断を知るための 曖昧さのない方策が必要です。

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク